gpt4 book ai didi

angularjs - 在 Controller AngularJS 之间共享数据

转载 作者:行者123 更新时间:2023-12-04 21:38:22 24 4
gpt4 key购买 nike

我试图将一个充满对象的数组从 Controller 1 发送到 Controller 2。但我在 Controller 2 中得到的只是一个空数组。我得到一个填充的唯一方法是在我的服务中创建一个静态数组。

我的服务

app.service('myData', function () {
this.myData = [];

this.addData = function(data) {
this.myData.push(data);
}
this.getData = function() {
return this.myData;
}});

设置数据的 Controller 1
app.controller('controller1',['$scope', 'myData', function($scope, myData) {
$scope.addData = function(index, name) {
myData.addData({index: index, name: name});
}}]);

Controller 2 看起来像这样
app.controller('controller2',['$scope', 'myData', function($scope, myData) {

$scope.myData = myData.getData();
$scope.$watch('myData.getData()', function(data){
console.log(data);
});
console.log($scope.myData);}]);

当我在寻找答案时,我发现了很多与我几乎相似的问题。唯一的区别是我从我的 Controller 填充我的服务而不是创建一个静态服务。

我的 console.logs 都返回一个空数组。为什么是这样?

最佳答案

您的 $watch表达式应该是一个函数( see the docs for $watch )。捐赠 $watch一个字符串告诉 Angular 检查 $scope 上的属性.除此之外,您还错误地引用了您的 myData服务作为字符串中的“数据”'data.getData()' .

1) 查看myData#getData的结果:

$scope.$watch(function () {
return myData.getData();
}, function (data) {
console.log(data);
});

2) 观看对 myData 的引用 $scope 上的服务内部数组:
$scope.myData = myData.getData();
$scope.$watch('myData', function (data) {
console.log(data);
});

关于angularjs - 在 Controller AngularJS 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com