修改自定义指令的属性
Change attribute of custom directive
我有一个自定义指令来加载div内的页面
.directive('page', function () {
return {
templateUrl: function (elem, attr) {
return 'pages/page-' + attr.num + '.html';
}
};
});
下面是自定义指令
的dom表示。<div page num="{{pageNo}}"></div>
这里我想从控制器更改页码。
指令可以正常工作,如果直接添加值
<div page num="1"></div>
当你想在指令中插入pageNo
的值时,你不能在templateUrl
函数中获得该值。你需要使用ng-include
指令在你的指令中获得作用域名称的值。
标记
<div page num="{{pageNo}}"></div>
app.directive('page', function() {
return {
scope: {
num: '@'
},
template: '<div ng-include="''pages/page-''+ num + ''.html''"></div>'
};
});
工作Plunkr From the docs:
您目前无法从templateUrl函数访问作用域变量,因为模板是在作用域初始化之前请求的。
这意味着您只能访问属性的文字值,而不能针对特定范围对其求值。你可以在闭包中定义你的指令,并以这种方式访问父作用域。然后调用scope.$eval('pageNo')
。
然而:这将是一个非常丑陋的hack。我宁愿选择@pankaj-parkar建议的ng-include
解决方案
相关文章:
- 与ng attr myCustomAttribute匹配的自定义属性指令
- 角度属性指令值
- 在angular中的指令中添加属性指令
- AngularJS - 包含嵌套属性指令的内容
- AngularJs 属性指令 2 路绑定
- 防损层,从角度元素指令传递属性指令
- AngularJS :使用角度属性指令将元素包装到自定义模板中
- 角度:在元素指令上添加属性指令
- 如何在 AngularJS 中使用属性本身将可写参数传递给属性指令
- 刷新 Angular 中自定义属性指令的元素
- 使用嵌入时,元素和属性指令之间是否有区别
- AngularJS - 有条件地使用属性指令
- 如何解析具有多个值的属性指令
- AngularJS中多属性指令的编译和链接顺序
- 可能的Angular属性指令错误
- 在ng-repeat中调用angularjs的属性指令
- 在ng-repeat中有条件地添加属性指令
- 如何在自定义属性指令中访问父范围
- 聚合物属性指令
- 将属性指令传递给元素指令