从ng-grid Angularjs传递变量

时间:2014-07-15 00:52:31

标签: javascript angularjs ng-grid

我想在另一个控制器中使用ng-grid表中的变量,

我的ng-grid的一部分定义如下:

  app.controller('ng-grid-controller'){
        ....
    $scope.gridOptions = {
        data:MyData,
        columnDefs: [
                    {field:'_id'},{name:'name',cellTemplate: 'templates/show.html'}]
    };
    $scope.getDetail = function(_id){

              alert(_id);
              var test=_id;
              console.log(test);
              return test;
    };
 } 

我能够在我的模板show.html中显示所显示的值,如下所示:

<div ng-style="{'cursor': row.cursor}" ng-click="getDetail(row.getProperty('_id'));" data >

</div>

但我的问题是如何在另一个控制器中访问此值,我需要传递以将此值作为另一个模板的参数传递:

在我的路线中,我有类似的东西:

  when('/show/:thatValue', {// Here I want that value I display=thatValue
    templateUrl: 'templates/displayvalue.html',
    controller: 'ShowController'
  }).

在我的控制器中:

   app.controller('ShowController', function($scope) {

        $scope.value='the value I display';//Something like this

    });

1 个答案:

答案 0 :(得分:0)

当您需要在控制器之间共享数据时,最好使用服务,然后您可以将该值注入您的相应控制器。例如:

app.factory('SomeService', [ '$log', function($log) {
   return {
      variable: null,
      getVariable: function() {
         return this.variable;
      },
      setVariable: function(value) {
         this.variable = value;
      }
   };
}]);

然后在你的Controller中使用它:

app.controller("MyController", [ '$scope', 'SomeService', function($scope, SomeService) {
    $scope.someMethod = function() {
       $scope.variable = SomeService.getVariable();
    };

    $scope.setSomeService = function(value) {
       SomeService.setVariable( value );
    }
}];