AngularJS用$rootScope给不同controller传参无效的问题

控制器1中的html元素:

控制器1中的controller部分:

app.controller('showQ2', function($scope, $http, $rootScope) {
$scope.QidShow = function(Qid){
$rootScope.tmp = Qid;
}
});

控制器2js部分:

app.controller('QInfo',function($scope, $http, $rootScope){
$http.get(QInfoURL).success(function(data){
var Qid = $rootScope.tmp;
alert($rootScope.tmp);
});
})

alert为undefined~

求解释~~~

通俗的讲app.controller('showQ2',和app.controller('QInfo',相当于java类中的两个方法。$rootScope.tmp = Qid;在app.controller('showQ2',方法内,而alert($rootScope.tmp);在app.controller('QInfo',方法内,局部声明的变量在其他方法中当然是undefined

/*常量*/
$rootScope.common = {
enabledStatus: [{code: false, name: '禁用'}, {code: true, name: '启用'}],
busTypeCodes: [],
taskTypeCodes: []
};

            /*查询监控业务类型*/
            service.getMonitorBusType().then(function (data) {
                $rootScope.common.busTypeCodes = data;
            });
            /*查询监控业务类型中任务类型*/
            $rootScope.btcChange = function (busTypeCode) {
                service.getMonitorBusTypeBybusTypeCode(busTypeCode).then(function (data) {
                    $rootScope.common.taskTypeCodes = data;
                });
            };

QidShow这个方法执行了吗?如果没执行,建议把$rootScope.tmp放到函数外面,并且给一个初始值,不然他就是一个未定义的值,自然取不到,javascript是函数级作作用域