Javascript 将数据从一个控制器传递到另一个控制器以重定向到视图

Javascript 将数据从一个控制器传递到另一个控制器以重定向到视图,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,昨天我询问了控制器之间的数据交换表单。但正确的问题是,在重定向某个视图之后,如何在控制器之间交换数据。这是一个想法(伪代码): 谢谢退房 同样是在stackoverflow上的先前帖子 您可以定义将注入两个控制器的服务: app.service('exampleService', function() { var val1; var href = "#/search"; var setVal = function(newString) { val1 = newStr

昨天我询问了控制器之间的数据交换表单。但正确的问题是,在重定向某个视图之后,如何在控制器之间交换数据。这是一个想法(伪代码):

谢谢退房

同样是在stackoverflow上的先前帖子

您可以定义将注入两个控制器的服务:

app.service('exampleService', function() {

  var val1;
  var href = "#/search";

  var setVal = function(newString) {
      val1 = newString
  };

  var getVal = function(){
      return val1;
  };

  return {
    setVal: setVal,
    getVal: getVal
  };


});
依赖项将服务注入两个控制器

在第一个控制器中,定义一些设置值的操作:

app.controller('ControllerOne', function($scope, exampleService) {
    $scope.addValOne = function(newString){
        exampleService.setVal(newString);
    };
});
在第二个控制器中,从服务获取val1:

app.controller('ControllerTwo', function($scope, exampleService) {
    $scope.val1 = exampleService.getVal();
});

假设我们希望在控制器之间共享产品对象。在这里,我创建了一个名为SharedDataService的AngularJS服务,如下所示:

myApp.service('SharedDataService', function () {
     var Product = {
        name: '',

        price: ''

    };

    return Product;

});
接下来,让我们继续使用SharedDataService创建两个不同的控制器。在控制器中,我们使用在上一步中创建的服务。可以按如下所示创建控制器:

var myApp = angular.module("myApp", ['CalService']);



myApp.controller("DataController1", ['$scope', 'SharedDataService',

    function ($scope, SharedDataService) {

    $scope.Product = SharedDataService;



    }]);



myApp.controller("DataController2", ['$scope', 'SharedDataService',

    function ($scope, SharedDataService) {

    $scope.Product = SharedDataService;



}]);
在视图中,我们可以简单地使用如下所示的控制器:

        <h2>In Controller 1h2>

        <input type="text" ng-model="Product.name" /> <br/>

        <input type="text" ng-model="Product.price" />

        <h3>Product {{Product.name}} costs {{Product.price}}  h3>

    div>

    <hr/>

    <div ng-controller="DataController2">

        <h2>In Controller 2h2>

        <h3>Product {{Product.name}} costs {{Product.price}}  h3>

    div>

控制器1h2中的


产品{Product.name}成本{{Product.price}}h3> div>
在控制器2h2> 产品{Product.name}成本{{Product.price}}h3> div>
优秀的回答水平。我将使用jsbin进行测试。谢谢。这是控制器中从视图获取数据的方法->$scope.indexData=function(){var newString=$scope.searchBox;dataService.setVal(newString);$window.location.href=“#/search”->这是主要部分,但不是重定向到searh路由。。。
        <h2>In Controller 1h2>

        <input type="text" ng-model="Product.name" /> <br/>

        <input type="text" ng-model="Product.price" />

        <h3>Product {{Product.name}} costs {{Product.price}}  h3>

    div>

    <hr/>

    <div ng-controller="DataController2">

        <h2>In Controller 2h2>

        <h3>Product {{Product.name}} costs {{Product.price}}  h3>

    div>