要求模板的多个指令

时间:2016-10-26 14:51:48

标签: javascript angularjs

我知道这可能是一个常见的问题,但我还没有找到解决问题的可行方案。

说我有以下指令:

    angular.module('Api').directive('contentSpinner', function (responseInterceptor,$timeout) {
    return {
        restrict: 'AE',
        templateUrl: 'js/helpers/Api/directives/content-spinner/content-spinner.html',
        scope: {
            boundRoute: '@',
            timeout: '=',
            timeoutms: '@'
        },
        link: function (scope, element, attr) {
            scope.shouldSpin = true;
            if (scope.boundRoute) {
                responseInterceptor.subScribeToRoute(scope.boundRoute, function () {
                    //Route has been completed and the spinner is ready to stop!
                    scope.shouldSpin = false;
                })
            }
            if (scope.timeout) {
                $timeout(function () {
                    scope.shouldSpin = false;
                }, scope.timeoutms);
            }

        }
    }
});

请注意AE限制。

然后我有另一个指令:

    angular.module('LBTable').directive('lbTable', ['$state', 'alertService', 'usSpinnerService', function ($state, alertService,usSpinnerService) {
    return {
        restrict: 'E',
        roles: 'all',
        templateUrl: 'js/helpers/LBTable/directives/lb-table/lb-table.html',
        scope: {
            tableData: '=',
            tableFields: '=',
            actionElement: '=',
            search: '=',
            tableDataFilter: '='
        },
        link: function (scope, element, attrs) {

        }
    }
}]);

正如您所看到的,两个指令都有一个模板。

现在,在我的所有<lb-table>元素中,我希望添加属性content-spinner(我的其他指令),以便它预先设置contentSpinner的模板。

然而,这会产生以下错误:

 Error: [$compile:multidir] Multiple directives [contentSpinner (module: Api), lbTable] asking for template on: <lb-table 

理论是什么使得它不知道使用哪个模板。

然而,如果没有将一个指令包裹在另一个指令中,就有办法解决这个问题:

<content-spinner><lb-table></lb-table></content-spinner>

0 个答案:

没有答案