这是通过使用服务而不是工厂解决的问题解决的:http://plnkr.co/edit/uh23lrXz2mI4ukvJvxws?p=preview由@Incognos提供。接受的答案是@Tomislav,他首次提到使用服务。Angular.js Services
我创建了一个控制器来处理商店的物品,它们存储像这样的(除去叠架,以节省空间,在这里):
'use strict';
angular.module('angularStoreApp')
.controller('storeCtrl', function($scope){
$scope.product = {
items: [
{
qty: 0,
stock: 5,
price: 99.00,
name: 'Almond Toe Court Shoes, Patent Black',
category: 'Womens Footerwear'
}
]
};
});
我需要创建一个服务来保存这些数据,以便它可以从另一个视图/控制器访问。 (这将是最后的购物车页面)。我试图使用.factory,然后在控制器$ scope.products = serviceName.items;但无济于事。我也通过控制器注入了服务。我给了一个$ injector:modulerr错误。
为了澄清,我创建的服务是那么这
var app = angular.module("angularStoreApp", []);
app.factory("StoreService", function() {
var products = {
items: [
{
qty: 0
}
]
};
return products;
});
控制器是这样:
'使用严格';
angular.module('angularStoreApp')
.controller('storeCtrl', function($scope, StoreService){
$scope.product = StoreService.items;
});
我卡在如何把我的数据从原来的控制器到该服务,然后注入到服务控制器再次显示的项目。要注意的是,不使用服务,数据在视图中显示得非常好。
在此展开。服务是“新”的,然后保存相同的实例。工厂只是每次都返回函数,所以如果你愿意,你可以自己调用'new'。 – Seer
@托米斯拉夫,谢谢你。尽管如此,为了清楚起见,我需要存储数据,例如存储数量,以便稍后在另一个视图中使用此数据,例如购物车。我可以看到数据正在存储在控制器中?纠正我,如果我错了,我是新角度。 –
它存储在整个wab页面生命周期中,而不是在控制器中,而是在服务中。您可以稍后在任何其他控制器中注入该服务 – Tomislav