AngularJS 具有独立作用域的指令 - 默认属性值

AngularJS directive with isolated scope - default attributes values

我有一个独立作用域的指令。在范围内有一个 属性 - 作为字符串传递 ('@').

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

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

但这并没有像我预期的那样工作...scope.someProperty 仍然是空的。

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

我该怎么做?

请参阅此 plunker 中的示例。

看看这个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";
  }
})