我很难解释我的问题,但我会尽力做到最好 我有一个带有控制器A的表格和带有控制器B的ng-transclude的指令 当我启动脚本时,我正在发送一个ID参数,我调用一个$ http.get的服务。我做了一个承诺
控制器A:
if($routeParams.id){
formFunc.get($routeParams.id).then(
function (data){
this.data = data;
console.log("1"+this.data);
}
);
}
console.log("2"+this.data);
控制器B:
this.fields = $scope.data.fields;
console.log("3"+$scope.data.fields);
我在控制台中:2未定义 - > 3 undefined - > 1对象
所以我很好地检索了控制器A中的数据,但没有与控制器B的任何绑定
数据是一个对象{“fields”:{...},“title”:...}
希望问题清楚
答案 0 :(得分:0)
首先,您应该了解$ scope是每个控制器的本地。
要在控制器之间共享数据,您可以使用服务或事件。
使用来自控制器A的服务集数据。
if($routeParams.id){
formFunc.get($routeParams.id).then(
function (data){
this.data = data;
console.log("1"+this.data);
fromFunc.setData(data); // <---- better, do the setting inside fromFunc, just to show you
});
}
从控制器B中注意此服务的更改
$scope.$watch(
function(){
return fromFunc.getData();
},
function(newValue, oldValue){
if(oldValue !== newValue){
$scope.data = newValue; // <----- getting the data from service when data changes.
}
})