2016-07-29 3 views
1

Я создаю таблицу с угловым использованием данных. Я использую значение из области действия, и я сравниваю это значение с полученными данными.ng-show не работает в столбцах datatables

"columns": [{ data: null, render: function (data, type, row) { 
var roleid =angular.element('#TextkeysController').scope().currentRole; 
return '<p ng-show="'+data.id+' == '+roleid+'" class="btn btn-success btn-xs disabled" value="connected" >connected</p><p ng-show="'+data.id+' != '+roleid+'" class="btn btn-danger btn-xs" value="notConnected" ng-click="connectRole(\''+data.id+'\',\''+data.name+'\')">Not connected</p>'; 
}, name: 'connect', "className":"center"}] 

Когда я загружаю данные обе кнопка появляется в строке - столбец и условие применяется только тогда, когда я нажимаю в нг щелкните действие.

Может ли кто-нибудь помочь мне узнать, почему это произошло?

ответ

2

Очевидно, что угловой не знает HTML, введенный dataTables. В этом случае я использую $compile отображаемое содержимое в drawCallback:

withOption('drawCallback', function() { 
    $scope.$apply($compile(angular.element('#tableId'))($scope)) 
} 

где #tableId является id вашей таблицы. Но в целом это немного перепутано, имхо. Когда мне нужны конкретные угловые директивы, прикрепленные к строкам или столбцам dataTables, я делаю угловой способ с datatable="ng". Медленнее, но более чистым и удобным.

+0

Должен ли я добавить withOption в файл javascript datatables или в контроллер? – jValls

+0

hey @jValls Я предполагал, что вы используете угловые dataTables (вот почему я исправлял) - выше приведен угловой метод dataTables, который я рекомендую. Если вы используете jQuery dataTables без директив, вы должны включить [drawCallback, как в документации] (https://datatables.net/reference/option/drawCallback). – davidkonrad

+0

Я решил проблему, добавляя условие непосредственно и не используя ng-show. Однако спасибо за вашу помощь. – jValls

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