我正在尝试使用服务、工厂或广播在控制器之间传递数据的所有方法。他们都不适合我。我在网上遵循了确切的解决方案,但还是很不幸。我把服务放在我的app.js里。
App.JS
myApp.service('customService', [function () {
this.list = [];
this.setObject = function (o) {
this.list.push(o);
},
this.getObject = function () {
return this.list;
}
}]);控制器#1
myApp.controller('Controller1', function ($scope, customService) {
customService.setObject({..});
$window.open("/controller2", '_blank');
}控制器#2
myApp.controller('Controller2', function ($scope, customService) {
console.log(customService.getObject()); // Returns []
}问题
它从控制器1返回控制器2上的[],而不是对象数据。
发布于 2017-03-10 14:52:38
您的控制器在同一页吗?
Angular.js只工作并将数据保存在单个页面上。如果您的页面重新加载(正如您所说的"express.js加载下一页“时所指出的那样),那么它将重新初始化所有内容。 你应该要么: 看看如何使用Angular.js路由(07),以便保持在同一个页面上。使用一些东西来持久化您的数据,例如本地存储。更多信息:http://diveintohtml5.info/storage.html
参考文献:Using angular service to share data between controllers
发布于 2017-03-10 16:51:50
你用过路由吗?如果您使用,那么您的代码应该是工作的。
https://stackoverflow.com/questions/42721030
复制相似问题