如何在单击到另一个页面时传递名称字段

时间:2017-05-17 07:21:35

标签: javascript angularjs ionic-framework

我有两个页面。第一个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;
})

2 个答案:

答案 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功能在应用程序模块之间进行通信的常用方法包括:

  • 使用服务
  • 使用活动
  • 通过在$ rootScope上分配模型
  • 直接在控制器之间,使用$ parent,$$ childHead, $$ nextSibling等。
  • 直接在控制器之间,使用ControllerAs或其他形式 继承