我知道这可能是一个常见的问题,但我还没有找到解决问题的可行方案。
说我有以下指令:
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>