2013-08-30 4 views
0

У меня возникает следующая проблема. Я пытаюсь создать директиву с некоторым шаблоном, как в примере вниз:Извлечь значение из области действия в директиве в angularjs

$templateCache.put("menuColumns.html", 
     "<div id=\"grid-table\">"+ 
     "<table id=\"table-{{gridOptions.gridName}}\" class=\"table table-striped table-hover\" >" + 
     "  <thead>"+ 
     "  <tr class=\"header cursor-hand\">"+ 
     "   <th ng-show=\"gridOptions.canDragDropRows\" style=\"width: 15px;\"></th>" + 
     "   <th ng-repeat=\"itemColumn in gridOptions.gridColumnDefs \" " + 
     "    ng-class=\"selectColumnStyle('{{itemColumn.field}}')\" >{{itemColumn.displayName}}</th>" + 
     "   <th style=\"width: 50px;\"></th>"+ 
     "  </tr>"+ 
     " </thead>"+ 
     "</table></div>" 
    ); 

В моем контроллере у меня есть переменный, как это:

$scope.gridOptions = { 
    canDragDropRows: true, 
    gridName: 'items-list', 
    gridColumnDefs: [{ field: "Id", width: "25%", displayName: "Id"}, 
        { field: "Description", width: "25%", displayName: "Name" }, 
        { field: "Location", width: "25%", displayName: "Installation" }, 
        { field: "Equipment", width: "25%", displayName: "Equipment"}] 
}; 

Как вы можете видеть в нг-классе внутри template, я пытаюсь вызвать функцию, называемую selectColumnStyle, и мне нужно передать в качестве параметра значение {{itemColumn.field}}.

Когда директива пытается выполнить рендеринг, я не получаю тех, у кого есть ng-класс. Кажется, что это не лучший способ передать параметры некоторым функциям.

Знаете ли вы, как это сделать? Это то, что мне нужно имя поля внутри функции.

Благодаря

+0

Пожалуйста, покажите нам код директивы, или пример jsFiddle или Plunk. Функция selectColumnStyle() должна быть объявлена ​​в вашей директиве. –

+0

Привет @OZ_. Я понял, что что-то другое меняет мою директиву. Сейчас он работает после некоторых изменений кода (но не в разделе кода, о котором я просил). Это [jsFiddle] (http://jsfiddle.net/abottoni/JSysr/7/) – abottoni

ответ

0

После некоторых исследований в моем коде (я пробовал то, что сказал мне Мэтью Берг); Я понял, что что-то другое меняет мою директиву. Сейчас он работает после некоторых изменений кода (но не в разделе кода, о котором я просил).

$templateCache.put("menuColumns.html", 
    "<div id=\"grid-table\">"+ 
    "<table id=\"table-{{gridOptions.gridName}}\" class=\"table table-striped table-hover\" >" + 
    "  <thead>"+ 
    "  <tr class=\"header cursor-hand\">"+ 
    "   <th ng-show=\"gridOptions.canDragDropRows\" style=\"width: 15px;\"></th>" + 
    "   <th ng-repeat=\"itemColumn in gridOptions.gridColumnDefs \" " + 
    "    ng-class=\"selectColumnStyle('{{itemColumn.field}}')\" >{{itemColumn.displayName}}</th>" + 
    "   <th style=\"width: 50px;\"></th>"+ 
    "  </tr>"+ 
    " </thead>"+ 
    "</table></div>" 

);

Код с {{}} работает нормально. Это jsFiddle, если кому-то это нужно!

Спасибо за помощь!

0

Вам не нужно использовать {{}}:

нг-класс = \ "selectColumnStyle (itemColumn.field) \"> {{}} itemColumn.displayName

+0

Привет @Mathew. Я понял, что что-то другое меняет мою директиву. Сейчас он работает после некоторых изменений кода (но не в разделе кода, о котором я просил). Код с {{}} работает нормально. Это [jsFiddle] (http://jsfiddle.net/abottoni/JSysr/7/) – abottoni

Смежные вопросы