這是通過使用服務而不是工廠解決的問題解決的: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