javascript - 一种以 Angular 绑定(bind)到对象的方法

标签 javascript angularjs

我想在指令的属性之间进行单向(不是一次)绑定(bind),但我正在努力解决如何在没有 attrs.$observe 的情况下表达这一点。目前我能想到的最好办法是通过 &attr 绑定(bind)并调用我在模板中绑定(bind)的变量,例如{{attr()}}

app.controller('MainCtrl', function($scope) {
  $scope.names = ['Original'];
  setTimeout(function () {
    $scope.names.push('Asynchronously updated name');
    $scope.$apply();
  }, 1000);
});

app.directive('helloComponent', function () {
  return {
    scope: {
      'names': '&names'
    },
    template: '<li ng-repeat="name in names()">Hello {{name}}</li>'
  }
});

 <body ng-controller="MainCtrl">
    <ul>
      <hello-component names="names"/>
    </ul>
  </body>

Plunker

有没有一种更好的方法可以保留单向绑定(bind)而不需要调用绑定(bind)的属性?

编辑

我更新了示例代码以阐明我想绑定(bind)到一个对象,而不仅仅是一个字符串。所以 @attr(与字符串属性一起使用)不是解决方案。

最佳答案

"&" 实际上是正确的做法。我反对这种方法(@JoeEnzminger、herehere),因为它在语义上有问题。但总的来说,Joe 是正确的 - 这是创建到实际对象的单向绑定(bind)与绑定(bind)到字符串的 "@" 的方法。

如果您不喜欢隔离作用域,那么您可以使用 $parse 获得相同的效果:

var parsedName = $parse(attrs.name);
$scope.nameFn = function(){
  return parsedName($scope);
}

并在模板中将其用作:

"<p>Hello {{nameFn()}}</p>"

关于javascript - 一种以 Angular 绑定(bind)到对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143323/

相关文章:

javascript - 信号 R : How to send a complex object with XmppClient. 发送方法?

javascript - 当数据通过 Angularjs 解析到达时如何触发渲染模板

javascript - 如何将分隔字符串粘贴到多个字段(例如信用卡)

javascript - d3 中何时使用 Selection.data(...).something() 与 Selection.merge().something() ?

javascript - javascript中的嵌套引号

angularjs - Stormpath Spring Boot 重定向循环

javascript - 使用http服务时访问xampp本地主机文件

javascript - 插件在指令中被调用了数百次

javascript - Azure 应用服务 - Nodejs ES 模块错误

javascript - 在 C# 中清除响应后回发后执行 Javascript