可以检查给定属性是否存在于指令中,理想情况下使用隔离范围,或者在最坏的情况下使用属性对象。
指令看起来像这样<project status></project>
,我想有条件地渲染状态图标,但前提是状态属性存在。
return {
restrict: 'AE',
scope: {
status: '@'
},
link: function(scope, element, attrs) {
scope.status === 'undefined'
}
}
理想情况下,它将直接绑定到范围,以便可以在模板中使用它。然而,绑定变量的值为不明确的。同样适用于&
只读 and =
two-way绑定。
我知道通过添加一个即可轻松解决<project status='true'></project>
,但对于我经常使用的指令,我宁愿不必这样做。 (XHTML 有效性不是问题)。
执行此操作的方法是检查链接函数的 attrs 参数中是否存在属性,并将其分配给指令隔离范围内的变量。
scope:{},
link: function(scope, element, attrs){
scope.status = 'status' in attrs;
},
这应该可以工作,而无需在链接函数中使用 if 语句。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)