具有隔离范围的AngularJS指令 - 默认属性值

时间:2015-03-31 10:35:40

标签: angularjs angularjs-directive

我有一个带有隔离范围的指令。在范围内有一个属性 - 以字符串形式传递('@')。

此属性是可选的 - 如果在指令属性中没有传递任何值,我想为属性设置一些默认值。所以我写了以下代码:

scope.someProperty = scope.someProperty || "New Value";

但这不符合我的预期...... scope.someProperty仍为空。

我进行了一些探索,并了解绑定到隔离范围属性(@)的一种方式意味着可以读取父值但不能写入。我想要做的是设置本地指令属性值,而不是更改父级。

我该怎么做?

请参阅此plunker中的示例。

1 个答案:

答案 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";
  }
})