从一个控制器传递变量到另一个$ rootscope [英] Passing variables from one controller to another with $rootscope

查看:335
本文介绍了从一个控制器传递变量到另一个$ rootscope的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从一个控制器通过ID到下使用$ rootscope。我认为这是作为变量设置为$ rootscope一样简单,但由于某些原因,当我在控制台检查出来作为未定义。这个变量不会改变,我想拥有它是全球性的所有以下控制器。这是为什么没有得到设置任何原因?

  .controller('CubeHeadCtrl',['$范围,$ rootScope','$ stateParams','cubeHeadFactory','localUserFactory','$ Q',函数( $范围,$ rootScope,$ stateParams,cubeHeadFactory,localUserFactory,$ q){    cubeHeadFactory.get({URLNAME:$ stateParams.urlName},功能(数据){
      $ scope.cube =数据;
      $ rootScope.home_channel_id = $ scope.cube.home_channel_id;
    });
  }])
  .controller('CubeLiveCtrl',['$范围,$ rootScope','$ stateParams','cubeHeadFactory','cubeLiveFactory',函数($范围,$ rootScope,$ stateParams,cubeHeadFactory,cubeLiveFactory){
    $ scope.homeid = $ rootScope.home_channel_id;        cubeLiveFactory.query({dynamicChannelID:$ scope.homeid},功能(数据){
           $ scope.cubeLive =数据;
           的console.log('这是我们存在与=检查出的ID'+ $ scope.homeid +'心不是那该多好');
    });
  }])


解决方案

不使用$ rootScope除非你有一个pretty很好的理由做so.in你的情况是没有的。用服务代替

  .factory('为MyService',函数(){
    返回{myVar1:};
})
.controller(CTRL1',函数($范围,为MyService){
    $ scope.MyService =为MyService;
    MyService.myVar1 =富
})
.controller('CTRL2',函数($范围,为MyService){
    $ scope.MyService =为MyService;
});

I'm trying to pass the id from one controller onto the next using $rootscope. I thought it was as simple as setting the variable to $rootscope, but for some reason when i check in console it comes up as undefined. This variable will not change and i'd like to have it be "global" for all following controllers. Any reason why this isn't getting set?

  .controller('CubeHeadCtrl', ['$scope',  '$rootScope', '$stateParams', 'cubeHeadFactory', 'localUserFactory', '$q',  function($scope, $rootScope, $stateParams, cubeHeadFactory, localUserFactory, $q) {

    cubeHeadFactory.get({ urlName: $stateParams.urlName }, function(data){
      $scope.cube = data;
      $rootScope.home_channel_id = $scope.cube.home_channel_id;
    });
  }])


  .controller('CubeLiveCtrl', ['$scope', '$rootScope', '$stateParams', 'cubeHeadFactory', 'cubeLiveFactory',  function($scope, $rootScope, $stateParams, cubeHeadFactory, cubeLiveFactory) {
    $scope.homeid = $rootScope.home_channel_id;

        cubeLiveFactory.query({dynamicChannelID: $scope.homeid}, function(data){
           $scope.cubeLive = data;
           console.log('This is there we check out the ID with = ' +$scope.homeid+ ' isnt that nice');
    });
  }])

解决方案

dont use $rootScope unless you have a pretty good reason to do so.in your case there is none. Use services instead

.factory('MyService',function(){
    return { myVar1:""};
})
.controller('Ctrl1',function($scope,MyService){
    $scope.MyService=MyService;
    MyService.myVar1="foo"
})
.controller('Ctrl2',function($scope,MyService){
    $scope.MyService=MyService;
});

这篇关于从一个控制器传递变量到另一个$ rootscope的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆