如何使用角度js 1将数据从一个控制器传递到另一个控制器

时间:2017-04-29 07:36:36

标签: angularjs mean-stack

大家好我使用角度js我需要将值从一个页面控制器传输到另一个页面控制器并将该值放入一个范围内任何人都可以帮助如何执行此操作

代码Page1.html

var app = angular.module("app", ["xeditable", "angularUtils.directives.dirPagination", "ngNotify", "ngCookies","ngRoute"]);
app.controller('Controller1', ['$scope', '$http', '$window', '$filter','$notify','$cookieStore',
 function ($scope, $http, $window, $filter, $notify, $cookieStore)
 {
   $scope.Message="Hi welcome"

 }]);

现在我想将范围消息显示到page2 controller

 var app = angular.module("app", ["xeditable", "angularUtils.directives.dirPagination", "ngNotify", "ngCookies","ngRoute"]);
    app.controller('Controller2', ['$scope', '$http', '$window', '$filter','$notify','$cookieStore',
     function ($scope, $http, $window, $filter, $notify, $cookieStore)
     {
       ///here i want get that scope value

     }]);

4 个答案:

答案 0 :(得分:0)

你应该为它使用服务。 服务

   app.factory('myService', function() {
 var message= [];
 return {
  set: set,
  get: get
 }
 function set(mes) {
   message.push(mes)
 }
 function get() {
  return message;
 }



});

在ctrl中

CTRL1

$scope.message1= 'Hi';
  myService.set($scope.message1);

CTRL2

var message =  myService.get()

答案 1 :(得分:0)

您可以使用$rootScope代替$scope

// do not forget to inject $rootScope as dependency
$rootScope.Message="Hi welcome";

但最佳做法是使用service并共享数据并在您想要的任何控制器中使用它。

答案 2 :(得分:0)

您应该定义一个服务并在其上编写getter / setter函数。

angular.module('app').service('msgService', function () {
  var message;
  this.setMsg = function (msg) {
     message = msg;
  };

  this.getMsg = function () {
     return message;
  };
});

现在,在注入这样的依赖项后,您应该使用setMeg中的Controller1函数和getMsg中的Controller2函数。

app.controller('Controller1', ['$scope', '$http', '$window', '$filter','$notify','$cookieStore', 'msgService',
   function ($scope, $http, $window, $filter, $notify, $cookieStore, msgService)
   {
     $scope.Message="Hi welcome"
     msgService.setMsg($scope.Message);
   }]);


app.controller('Controller2', ['$scope', '$http', '$window', '$filter','$notify','$cookieStore', 'msgService',
 function ($scope, $http, $window, $filter, $notify, $cookieStore, msgService)
 {
   ///here i want get that scope value
   console.log('message from contoller 1 is : ', msgService.getMsg());
 }]);

答案 3 :(得分:0)

使用服务将数据从一个控制器共享到另一个控制器

我们可以创建setget之间controllers之间数据的服务,然后将该服务注入我们想要使用它的控制器函数中。

服务:

app.service('setGetData', function() {
  var data = '';
    getData: function() { return data; },
    setData: function(requestData) { data = requestData; }
});

控制器:

app.controller('Controller1',['setGetData',function(setGetData){

//设置来自一个控制器的数据   $ scope.Message =“嗨欢迎”;
  setGetData.setData($ scope.Message);

}]);

app.controller('Controller2', ['setGetData',function(setGetData) {

  // To get the data from the another controller  
  var res = setGetData.getData();
  console.log(res); // Hi welcome

}]);

在这里,我们可以看到Controller1用于设置数据,Controller2用于获取数据。因此,我们可以将数据从一个控制器共享到另一个控制器。