【发布时间】:2015-10-27 04:18:00
【问题描述】:
我正在为客户可以使用的库创建指令。我需要让客户为指令创建自己的模板,并将该模板的绝对 url 值传递给我的指令。我的一个指令将在其中包含另一个自定义指令,并且它的模板将根据父指令的属性之一的值来计算。这是一个例子:
<parent-dir menu-template="this.html" item-template="that.html"></parent-dir>
我有一个用于该指令的模板,如下所示:
<ul style="list: none" ng-repeat="item in menu">
<child-dir template="{{itemTemplate}}"></child-dir>
</ul>
我的指令如下所示:
angular.module('myApp')
.directive('parentDir', function () {
return {
restrict: 'E',
scope: {
menuTemplate: '@',
itemTemplate: '@',
menuType: '@',
menuName: '@',
menuId: '@',
},
templateUrl: function (element, attrs) {
alert('Scope: ' + attrs.menuTemplate);
return attrs.menuTemplate;
},
controller: function ($scope, $element, $attrs) {
$scope.defaultSubmit = false;
alert('Menu: '+$attrs.menuTemplate);
alert('Item: ' + $attrs.itemTemplate);
$scope.itemTemplate = $attrs.itemTemplate;
if ($attrs.$attr.hasOwnProperty('defaultSubmit')) {
alert('It does');
$scope.defaultSubmit = true;
}
}
};
})
.directive('childDir', function () {
return {
restrict: 'E',
require: '^parentDir',
templateUrl: function (element, attrs) {
alert('Item Template: ' + attrs.template);
return attrs.template;
},
controller: function ($scope, $element, $attrs) {
$scope.job;
alert('Under job: ' + $scope.itemTemplate);
}
};
});
我没有显示所有代码,但这是我的问题的主要部分。当我运行它时,我一直在 childDir 上的模板未定义。
从 parentDir 永久保存 itemTemplate 的值以便 childDir 可以将其用作模板的最佳做法是什么?
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope