将$ scope变量评估为指令属性的值

时间:2016-08-22 13:03:50

标签: angularjs angularjs-directive datatables interpolation

我试图通过将$ 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;而不是真/假。

1 个答案:

答案 0 :(得分:0)

您从控制器传递的data-column-visible="visibility"可见性应该是一个原始值...这就是为什么它在创建新scope时不会改变的原因。

在您的控制器中,它应该是$scope.visibility = true或false。将其更改为对象。

$scope.someObject = {}
$scope.someObject.visibility = true or false

始终建议传递object,而不是primitives