指令仅适用于另一个指令

时间:2014-03-10 10:43:28

标签: angularjs angularjs-directive

我制定了过滤数据的指令。它使用范围:true而不是transclusion。不知何故,它只适用于ng-switch。也许还有其他指令,但我没有尝试过。

我的HTML看起来像这样:

<my-filter source="{{foodArray}}" filter="reaction,category"> // source and filter are properties on the directive scope
    <div>
        <div class="span3">
            <table class="table table-bordered">
            <tr data-ng-repeat="item in filters.reaction"> // filters property of directive scope
                <td><input type="checkbox" data-ng-model="item.isChecked" data-ng-change="filterCtrl.filterList()"></td>
                <td>{{ item.value }}</td>
            </tr>
        </table>
        </div>
    </div>
    <table>
        <tbody>
            <tr data-ng-repeat="food in filteredData"> // filteredData object on the directive scope
                // interating through filteredData
            </tr>
        </tbody>
    </table>
</my-filter>

这是我的指令及其控制器:

angular.module('myModule', [])
.directive('myFilter', function() {
    return {
        restrict: 'E',
        scope: true,
        controller: ["$scope", function ($scope) {
            var filterCtrl = this;
            $scope.filters = {};
            filterCtrl.inputArray = [];

            filterCtrl.filterList = function() {
                /* some code where tmp array is created */

                $scope.filteredData = tmp;
            }   
        }],
        controllerAs: 'filterCtrl',
        link: function(scope, element, attrs, filterCtrl) {
            filterCtrl.inputArray = angular.fromJson(attrs.source);
            scope.filteredData = filterCtrl.inputArray;

            // ...
        }   
    }
}); 

FilteredData和过滤器是指令范围的属性。现在,当我移除周围的ng开关时,数据为空。 scope.source属性也可以是数组或对象。当我删除ng开关并给它一个对象作为源它实际上会抛出语法错误:SyntaxError:意外的输入结束     at Object.parse(native)     在Object.fromJson

当我使用数组时它不会抛出。

不知道该怎么做。如果有人遇到这个问题,我很乐意听取你的意见。

0 个答案:

没有答案