Angular 从 transclude 范围更改父模型

Angular changing parent model from transclude scope

我对 angular 嵌入范围感到困惑。我正在尝试让我们说可折叠指令。但是在 transclude 范围内绑定不会改变父模型,除非我为模型使用一些对象,例如。数据。

<div>
  data.prop: {{data.prop}} <br>
  prop: {{prop}}
  <collapsible>
    data.prop: <input type="text" ng-model="data.prop" /> <br> // WILL CHANGE PARENT
    prop: <input type="text" ng-model="prop" /> // WONT CHANGE PARENT
  </collapsible>
</div>

我已经阅读了这个主题,但我仍然不明白为什么我必须对模型使用前缀。 Confused about Angularjs transcluded and isolate scopes & bindings

工作示例在 http://plnkr.co/edit/z3IvR1a37jdNRCJWG0Yq?p=preview

在我的应用程序中,我将对象用于表单,因此它工作正常,但我只想知道为什么会这样。

当您使用对象绑定到模型时,您的对象作为引用传递到不同的范围,而不是副本,在 Javascript 中,对象作为引用传递给函数。在那种情况下,它仍将引用以前的范围。