我有一个带有隔离范围的指令。在范围内有一个属性 - 以字符串形式传递('@')。
此属性是可选的 - 如果在指令属性中没有传递任何值,我想为属性设置一些默认值。所以我写了以下代码:
scope.someProperty = scope.someProperty || "New Value";
但这不符合我的预期...... scope.someProperty
仍为空。
我进行了一些探索,并了解绑定到隔离范围属性(@)的一种方式意味着可以读取父值但不能写入。我想要做的是设置本地指令属性值,而不是更改父级。
我该怎么做?
请参阅此plunker中的示例。
答案 0 :(得分:4)
看看这个plnkr
scope.someProperty = scope.someProperty || "New Value";
此分配会将someProperty
值设置为New Value
。但是由于scope: {someProperty: '@'}
语句在初始摘要周期之后,angular将someProperty
值更新为相应的属性值,该值为空。
尝试此操作以提供默认值。
attrs.$observe('someProperty', function (nv, ov) {
if (!nv) {
scope.someProperty = "New Value";
}
})