我想将模板传递给这样的指令:
<my-directive template="/templates/my-directive-template.html"></my-directive>
如果未提供模板,则使用标准模板。 我怎样才能做到这一点?
或者我不应该这样做?我只是想重用一个指令,但每次都要给它不同的外观。
这是指令......但我仍然坚持如何前进。
app.directive('my-directive', function(){
return {
restrict: 'E',
scope: {
template: '=template'
},
template: 'standard-template.html'
}
})
答案 0 :(得分:2)
您可以使用ng-include。所以作为一个例子
app.directive('my-directive', function(){
return {
restrict: 'E',
scope: {
template: '=?'
},
template: '<div ng-include="directiveTemplate"></div>',
link: function (scope) {
scope.directiveTemplate = scope.template || '/path/to/default.tpl.html';
}
}
})
答案 1 :(得分:2)
templateUrl
可以是一个函数,它将元素及其属性作为参数获取。所以你可以做到以下几点:
app.directive('my-directive', function(){
return {
restrict: 'E',
templateUrl: function(element, attrs) {
return attrs.template || 'standard-template.html';
}