无法访问Angular Directive模板函数中的属性实际值
Cannot access attribute real value in Angular Directive template function
我已经找了一段时间了,找不到任何与此相关的问题,所以我想在这里询问是否有人能帮助我,我们将不胜感激。
我正在为一个标签创建一个指令(我希望数字是动态的,有角度的,没有办法做这样的事情,所以我创建了一个带有模板的指令作为函数,如下所示:
angular.module("myModule").directive("myHeader", ["translateFilter", function (translateFilter) {
"use strict";
return {
restrict: "E",
scope: true,
template: function(element, attrs) {
var html = "", title = translateFilter(attrs.title);
console.log(attrs); //Here i can see that attrs.size is "3"
console.log(attrs.size); // I get {{hsize}} instead
html += "<h" + attrs.size + ">";
html += "<a href=" + attrs.url + " title=" + title + ">";
html += "<i class='fa fa-" + attrs.icon + "'></i>";
html += title;
html += "</a>";
html += "</h" + attrs.size + ">";
return html;
}
};
}]);
我在另一个指令中使用这个指令,如下所示:
<my-header url="{{url}}" icon="{{icon}}" title="{{title}}" size="{{hsize}}"></my-header>
其中{{hsize}}是"3"。
任何人都可以指出,为什么当我做console.log(attrs.size);
时,我会得到{{hsize}},而当我做了console.log(attrs);
时,我可以清楚地看到它的值是"3"
?
在我的指令中,我已经尝试了scope
属性的所有可能组合。
这很正常,因为{{hsize}}它不是AngularJS"插值"的。您可以在控制台中看到3(当console.log(attrs)时),因为在此期间Angular"插值"数据。请尝试在您的模板函数中写入以下内容:
attrs.$observe('size', function(value){
console.log(value);
});
但是,如果可以的话。在模板函数中这样做不是很好。链接函数和编译函数用于修改模板。
查看这些功能的文档:https://docs.angularjs.org/api/ng/service/$compile
有关数据"插值"的更多信息,请参阅:https://gist.github.com/CMCDragonkai/6282750
相关文章:
- 如何使对象属性函数成为事件发射器
- 属性函数的 JavaScript 初始值
- 类型错误: 无法设置未定义的属性<函数>
- Javascript set 属性函数不起作用
- 在循环中运行对象属性函数
- 为什么在枚举属性/函数时键长度不准确
- 主干模型获取属性函数返回上次更新的值
- 使用 Jquery 和对象属性函数时出现类型错误
- Javascript:属性函数中的引用
- 导出的目的是什么属性函数在挖空.js库中
- 检查全局属性/函数是否已在 JavaScript 中被覆盖
- 误解了输入文本值属性函数的正确使用
- 将onClick函数绑定到选项卡的href属性函数
- 当函数的属性函数被调用时,是否可以修改函数本身
- 命名对象属性函数
- Javascript -为什么要循环?(原型属性->构造函数属性->函数对象->构造函数属性)
- 如何从属性函数中引用上面的对象
- Javascript继承:子类型原型不能访问超类型的属性/函数
- 破坏性映射对象属性函数
- React.js:如何定义默认属性函数