在两个不同的页面中使用角度控制器的值

时间:2017-10-11 08:15:15

标签: javascript php angularjs controller

我有两个不同的页面。我们的名字是product.phpbuy.php. controllerProductproduct.phpcontrollerBuybuy.php

用户加载product.php并选择要购买的产品,价格为59美元。当他或她选择产品时,$scope.setPrice();功能在controllerProduct中运行。 setPrice函数类似于:

window.ngApp = angular.module('myApp', []);
window.ngApp.controller('controllerProduct', ['$scope',
     function ($scope) {
          $scope.price = null //default
          $scope.setPrice = function(){
               $scope.price = 59;
          }; 
}]); 

现在,他或她选择了价格为59美元的产品,最后点击了购买按钮,将加载buy.php页面。

buy.php中,我想向用户显示如下内容:

"嗨用户,你打算买这个产品!它的价格是{{price}}$"。

如何在controllerBuy中使用controllerProduct的价格变量?

1 个答案:

答案 0 :(得分:0)

每当您想要在控制器之间共享逻辑时,它就是服务的完美场景。

一般方法可能就是这个

 //singleton to share logic between controllers
.service('ShareService', function(){
 var _price = null;
 this.setPrice = function(price){
   _price = price; 
 }
 this.getPrice = function(){
   return _price;
 }
})

 //first controller
.controller('controllerProduct', function($scope, ShareService){
  $scope.setPrice = function(price){
    $scope.price = price;
    ShareService.setPrice(price);
  }; 
})

//second controller
.controller('controllerBuy', function($scope, ShareService){
  //watch changes of the price
  $scope.$watch(function(){
    return ShareService.getPrice()
  }, function(newVal){
    $scope.selectedPrice = newVal;
  })
})