首页 > 解决方案 > 在两个 aspx 网页之间更新 $Scope 变量

问题描述

我有一个搜索页面,一旦用户单击搜索按钮,它就会调用一个 angualrjs 函数,我需要在其中更新一些 $scope 变量并重定向到另一个页面。

这是我在控制器之间共享对象的服务

    var app = angular.module('MyApp', ['angular.filter', 'googlechart']);
app.factory('sharedService', function () {
var testObj = {
    name:'User Name 1',
    age: 25
};

var searchParameter = function (newObj) {        
    testObj = newObj;

};

var getParameter = function () { 
    return  testObj;
    };

    return {
        searchParameter: searchParameter,
        getParameter: getParameter
    };
});

这是控制器 1:SearchController

app.controller('SearchController', function ($scope, $parse, $filter, $location, $window, sharedService) {

$scope.searchParameter = function (searchParameter) { 
    var testObj = {
        name: 'UserName 2',
        age: 35
    };
    sharedService.searchParameter(testObj);        
        $window.location.href = 'http://localhost:8080/UI/SearchResult.aspx';      
    }
});

这是我的控制器 2:ResultController

app.controller('ResultController', function ($scope, $parse, $filter,  sharedService) {  
    $scope.getParameter = function () {       
        $scope.testParam = sharedService.getParameter();        
    }
});

testObj 是一个模型。

它正在重定向到结果页面,但 testObj 值没有更新为 UserName 2。

如何在控制器 2 中获取更新值?

标签: asp.netangularjsangularjs-scopeasp.net-4.5

解决方案


这不起作用,因为在您的服务中,该对象被声明为 var。因此,即使您从外部进行更新,它也不会返回该值。除了服务之外,如果你的页面像父子控制器,你可以在控制器之间共享对象。如果服务解决方案不起作用,请告诉我,我可以共享解决方案以在控制器之间共享对象。

该变量应绑定到服务。如下所示:

var app = angular.module('MyApp', ['angular.filter', 'googlechart']);
app.factory('sharedService', function () {
    this.testObj = {
      name:'User Name 1',
     age: 25
    };

var searchParameter = function (newObj) {        
   this.testObj = newObj;  
};

 var getParameter = function () { 
    return  this.testObj;
 };

   return {
      searchParameter: searchParameter,
      getParameter: getParameter
    };
 });

推荐阅读