我有两个页面。第一个ItemMenuPage
秒是CartPage
。所以,当我点击任何项目名称时,它应该导航到CartPage
,但我需要该项目名称是显示在CartPage
。
MenuController
.controller('FoodCtrl', function($scope,$state,mySharedService) {
$scope.addProductItem=function(product){
var itemName=product.itemName;
mySharedService.setData(product);
$state.go('app.produce');
}
});
CartController
.controller('ProduceSaveController', ['$scope','mySharedService',
function(scope,mySharedService){
scope.$on('handleBroadcast',function(){
scope.itemName=mySharedService.itemName;
})
service.js
.factory('mySharedService',function($rootScope){
var sharedService={};
sharedService.itemName='';
sharedService.setData=function(product){
this.itemName=product;
this.broadcastItem();
};
sharedService.broadcastItem=function(){
$rootScope.$broadcast('handleBroadcast');
};
return sharedService;
})
答案 0 :(得分:3)
通常,您会将购物车存放在某处。数据库,会话存储等。实际存储它的地方并不重要,只要该数据的接口正确。
angular.module('app')
.factory('cart', function()
{
return {
addItem: function(item){
// code here to store item
},
getItems: function(){
// code to get items - if ajax, probably returns a promise object
}
};
});
在itemPage上,您将调用addItem。 在购物车页面上,您可以调用getItems。
angular.module('app')
.controller('cartController', function($scope, cart){
cart.getItems().then(function(items){
$scope.items = items;
};
});
没有任何进一步的信息,这是我能给予的帮助。
答案 1 :(得分:0)
使用核心AngularJS功能在应用程序模块之间进行通信的常用方法包括: