Angularjs 文字双向绑定(bind)

标签 angularjs data-binding

是否可以在父范围和我的指令的隔离范围之间建立双向绑定(bind),但不通过我的指令的属性传递它?

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

'@' 建立了我想要的文字绑定(bind),但只是单向的。

我也试过“=@”,希望 Angular.js 足够聪明,可以理解它,但运气不好。

我知道我也可以使用非隔离范围 (scope:true),但在我的代码中,我使用了一些需要隔离范围的技术。

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

最佳答案

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

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

// 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>

关于Angularjs 文字双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387174/

相关文章:

typescript - 如何将 ionic3-star-rating 动态值绑定(bind)到 ionic 中的数据对象

c# - 如何修复 WPF Datagrid 中的 "Two-way binding requires Path or XPath"异常?

winforms - .net WinForms 数据绑定(bind)使用 Lambda 而不是属性

testing - 在 Karma 测试中访问 AngularJS 应用服务

javascript - Angular JS 以树状格式呈现 JSON

javascript - Angular : Calling function in factory from html ng-click

xamarin - 我们如何将 Grids Width 绑定(bind)到 xamarin 表单中通用 View 模型中的属性列表项?

javascript - Chrome 中的 Angular CPU 泄漏?

javascript - AngularJS 中的 GetElementById

php - PDO:我可以避免 bindParam 吗?