我试图通过将$ scope.visibility值作为属性评估自定义指令来隐藏列,但它无效。
<td data-column-visible="visibility" data-table-property='id' data-table-property-type='button'>
<button class="btn btn-xs btn-default" data-toggle="modal"
ng-click="modify(user)">
<i class="icon-pencil bigger-110"></i>
</button>
<button class="btn btn-xs btn-danger" data-toggle="modal"
ng-click="delete(user)">
<i class="icon-trash bigger-110"></i>
</button>
</td>
我的指示:
'use strict';
define([ 'appModule' ], function(app) {
// see example
// http://stackoverflow.com/questions/14242455/using-jquery-datatable-with-angularjs
app.directive('appDatatable', [ '$rootScope', '$compile', function($rootScope, $compile) {
var _buildAoColumnDefs = function(scope, tableElement, tableData) {
....
var defs = {
"mData": _tdElement.data("tableProperty"), "aTargets":[index], "bVisible": _tdElement.data("columnVisible")
};
....
return result;
};
return {
scope : {
...
columnVisible: "="
},
link : function(scope, element, attrs) {
// Watch changing aaData.
var dataTable = null;
scope.$watch('aaData', function(value) {
...
var aoColumnDefs = scope.aoColumnDefs || _buildAoColumnDefs(scope, element, value);
...
}, true);
}
};
}]);
});
它总是评估&#34;可见性&#34;而不是真/假。
答案 0 :(得分:0)
您从控制器传递的data-column-visible="visibility"
可见性应该是一个原始值...这就是为什么它在创建新scope
时不会改变的原因。
在您的控制器中,它应该是$scope.visibility
= true或false。将其更改为对象。
$scope.someObject = {}
$scope.someObject.visibility = true or false
始终建议传递object
,而不是primitives
。