Angularjs 文字双向绑定



是否可以在父作用域和指令的隔离作用域之间建立双向绑定,但不通过指令的属性传递它?

'=' 建立了一个双向的,但不是文字绑定:它不是直接从父级的作用域中获取指定的值,而是查找具有此类名称的指令属性,然后对其进行计算,然后使用结果值作为父作用域变量名称。

"@"按照我的意愿建立文字绑定,但只能单向。

我也尝试过"=@",希望 Angular.js 足够聪明地理解这一点,但没有运气。

我知道我也可以使用非隔离作用域(scope:true(,但是在我的代码中,我正在使用一些必然需要隔离作用域的技术。

有什么方法可以做我想做的事吗?

在指令和状态之间的范围内传递模型被认为是一种不好的做法,因为它违反了松散耦合设计原则。意味着它可能使指令的可重用性降低,在范围内产生副作用,并引入不明确的行为。当我们谈论 JavaScript 中的全局状态时,同样的原因也是如此,这也被认为是一种不好的做法(但对于一些罕见和特定的情况仍然可用(。

不过,我建议仔细研究单向绑定@属性。因为实际上,它们提供了一种向前和向后传递值的方法,以及将控件保留在指令端。不要与术语混淆 :)

// in directive
var theValueReturnsByController = scope.myOneWayAttr({theValuePassedToController: 1});
alert(theValueReturnsByController === 2);
// in controller
scope.oneWayAttrHandler = function(theValueReceivedFromDirective) {
  theValueReturnedToDirective = theValueReceivedFromDirective + 1;
  return theValueReturnedToDirective;
};

在模板中:

<my-directive my-one-way-attr="oneWayAttrHandler(theValuePassedToController)"></my-directive>
<</div> div class="one_answers">

如果你可以直接调用它,那将是一个糟糕的设计。为什么不通过绑定传递它?显式使用该方法。

最新更新