【发布时间】:2019-08-16 20:41:31
【问题描述】:
双向数据绑定不会在组件之间更新
我正在使用两种方式数据绑定设置组件间通信。我有一个父控制器,它从 AJAX 调用中获取数据并将该数据发送到 2 个组件。
我尝试修改传递给组件的数据,但如果 child1 组件更新数据,尽管存在双向数据绑定,但子组件不会获取更新数据。我读到 $onChanges 钩子不会捕获双向数据绑定的更改事件。
<div ng-controller="ParentController as ctrl">
<child1 data="ctrl.data"></child1>
<child2 data="ctrl.data"></child>
</div>
父控制器:
var app = angular.module('app',[]);
app.controller('ParentController', function($scope, $get){
//get data from AJAX call
this.data = getDataFromAjaxCall();
}
Child1 组件:
app.component('child1',{
bindings : {
data : '='
},
controller: function($scope){
var self = this;
self.$onChanges = function(changes){
if(changes.data)
console.log('data changed');
}
self.addData = function(){
self.data.push({
id : 10,
name : 'abc'
});
}
}
});
Child2 组件:
app.component('child2',{
bindings : {
data : '='
},
controller: function($scope){
var self = this;
self.$onChanges = function(changes){
if(changes.data)
console.log('data changed');
}
self.addData = function(){
self.data.push({
id : 20,
name : 'pqr'
});
}
}
});
如果 child2 组件修改了数据,我希望在 child1 组件中获取更新的数据,反之亦然。
【问题讨论】:
-
执行 XHR 的函数无法返回数据。它们只能返回需要从中提取数据的 Promise。
标签: angularjs angularjs-components angularjs-1.5