从子组件到父组件的字符串字段绑定不起作用

时间:2016-07-15 13:48:31

标签: angularjs binding angular components parent-child

示例plunk显示了非常简单的页面,其中我们有一个父组件和一个子组件。从父级到子级,我们传递两个值,其中一个是字符串,另一个是数组。

<child [aList]="sharedList" [aString]="sharedString"></child>

问题是当我更新它仅在子组件中更新的字符串值但在父组件中不更新时。但是,如果我从子组件更新数组值,它将在两者(子和父)中更新。

所以我的问题是为什么字符串值不会在父节点中从子节点更新,而是数组值。我做错了什么。

1 个答案:

答案 0 :(得分:2)

在Javascript中,原始类型(字符串,数字等)是不可变的。对象(复杂类型,如数组,对象,函数等)是可变的,并通过引用传递。这意味着当您将一个字符串从父级传递给子级时,您实际上传递了该值的副本,即另一个字符串。

当您稍后更改子级中的原始值时,原始父级保留不会自动更新。

同时,当您传递一个对象(如数组)时,父对象和子对象都将使用对同一对象的引用。对一个的更改会反映在另一个中。