作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的 html 元素:
<new-element data-type="{{widget.type}}"></new-element>
我想让我的指令根据 type
是什么使用不同的 templateUrl
。
appDirectives.directive('newElement', function() {
return {
restrict : 'E',
scope: false,
templateUrl: function(elem, attrs) {
var template_url = (attrs.type == 'widgetA') ? 'template-a.html' : 'template-other.html';
return template_url;
}
}
});
总是返回的模板是 template-other.html
因为 type
值仍然是 {{widget.type}}
并且还没有被插值。
有没有什么方法可以监视 type
属性并相应地更改模板?
最佳答案
你不能那样做:
var template_url = (attrs.type == 'widgetA') ? 'template-a.html' : 'template-other.html';
因为您无法访问模板方法中的指令属性,但您可以这样做:
appDirectives.directive('newElement', function() {
return {
restrict : 'E',
scope: {},
bindToController: {
type: '='
},
controller: 'SomeController',
controllerAs: 'ctrl',
template: '<div ng-if="ctrl.type === 'widgetA'"><!-- your widgetA contet --></div><div ng-if="ctrl.type === 'widgetB'"><!-- your widgetB content --></div>';
}
});
在这里你可以找到一篇关于如何使用链接功能做你想做的事情的文章,但我建议改用 Controller 。
关于angularjs - 基于元素属性插值的指令中的动态 templateUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35666293/
我是一名优秀的程序员,十分优秀!