【发布时间】:2014-09-12 15:26:52
【问题描述】:
可以检查给定属性是否存在于指令中,理想情况下使用隔离范围,或者在最坏的情况下使用属性对象。
使用类似于 <project status></project> 的指令,我想有条件地呈现状态图标,但前提是状态属性存在。
return {
restrict: 'AE',
scope: {
status: '@'
},
link: function(scope, element, attrs) {
scope.status === 'undefined'
}
}
理想情况下,它将直接绑定到范围,以便可以在模板中使用。但是,绑定变量的值是undefined。 & 只读 和 = 双向 绑定也是如此。
我知道通过添加<project status='true'></project> 可以轻松解决这个问题,但是对于我会经常使用的指令,我宁愿不必这样做。 (XHTML 有效性,不是问题)。
【问题讨论】:
-
我知道你提到了它,但只是想知道 - 你有没有尝试过类似
"status" in attrs的方法,看看这个评估是什么? -
“@”不是传递给指令的单向文本绑定吗?所以 scope.status 应该是“true”的文本,只要你将一个变量作为
<project status="{{myScopeVariable}}"></project>传递给指令> -
当您将作用域指定为上述对象时,该指令会创建一个新的隔离作用域,该作用域不会从父作用域继承属性。而是使用 scope: true 来创建一个新范围(可以访问父范围属性),或者使用 scope: false 来让指令使用父范围。你问的是这个吗?我不太明白你的问题...
-
链接函数中的代码也只是一个布尔表达式。您的意思是在 IF 语句中包含它吗?
-
scope.status === 'undefined'
标签: javascript angularjs angularjs-directive angularjs-scope