Javascript 与指令'一起一次性绑定;s双向绑定和ng重复

Javascript 与指令'一起一次性绑定;s双向绑定和ng重复,javascript,angularjs,angular-directive,Javascript,Angularjs,Angular Directive,假设我们有以下指令: app.directive('foo', function() { return { restrict: 'E', scope: { prop: '=' }, template: '<h1>{{prop}}</h1>' }; }); 在这种情况下,如果item以后发生更改,则会通知foo,就好像有常规绑定一样。:似乎没有任何实际效果(它确实阻止创建额外的手表,我自己检查了一下)。我创建了一个例子来说明这两种情况 我的

假设我们有以下指令:

app.directive('foo', function() {
  return {
    restrict: 'E',
    scope: { prop: '=' },
    template: '<h1>{{prop}}</h1>'
  };
});
在这种情况下,如果
item
以后发生更改,则会通知
foo
,就好像有常规绑定一样。
似乎没有任何实际效果(它确实阻止创建额外的手表,我自己检查了一下)。我创建了一个例子来说明这两种情况


我的问题是:这种行为正确吗?我希望这两种情况下都是一致的。

我相信你的问题的答案是肯定的,这是正确的行为。当
items
中的
item
发生更改时,将创建模板的新实例,而旧实例将被删除。在您的例子中,将创建一个新的
foo
元素,因此
prop
属性值也是新的。这来自角度文档:

当集合的内容更改时,ngRepeat会对DOM进行相应的更改:

  • 添加项时,模板的新实例将添加到DOM中
  • 删除项时,其模板实例将从DOM中删除
  • 当项目被重新排序时,它们各自的模板在DOM中被重新排序

它没有明确说明更新时会发生什么。但是,我相信新的会取代旧的,而不是更新的。

先生,你完全正确。我刚刚用这个确认了这一点
ngRepeat
删除当前元素,并在项目本身更新时添加新元素。
<foo prop="::someProperty"></foo>
<foo ng-repeat="item in items" prop="::item"></foo>