我可以在$ rootScope中获得$ scope值吗?

时间:2017-11-11 13:20:58

标签: javascript angularjs scope angularjs-rootscope

我在scope中需要rootScope值,因此我可以在应用中使用它,所以我就像

一样
var app = angular.module('myApp', []);
    app.run(function($rootScope) {
    $rootScope.car= 'honda';
});
app.controller('myCtrl', function($scope) {
    $scope.car= "suzuki";
});

我正在我的索引文件中访问{{car}}并且它给了我本田,这很好。

我需要的是$scope.car $rootScope.car$scope.car的相同值才能访问全局,因为我无法访问$ scope.car值。

我想要相同值的原因是在rootscope中,我将获得我的服务值,该值是在长代码之后动态来自json解析并且进入$rootScope,再次写服务不是良好的做法。

任何其他方式,在同一个控制器功能中,我可以$scope就像我可以使用全局的markedDates= {{ [this.state.markedData]: {selected: true, marked: true}, }} 一样?

还是其他任何选择?

感谢。

2 个答案:

答案 0 :(得分:0)

在您的控制器中,您可以使用$ rootScope,因为每个应用程序都有一个根作用域。您不必在控制器中安装$ scope.car,也可以在控制器中使用$ rootscope.car。

答案 1 :(得分:0)

您可以从子控制器广播事件

 $rootScope.$emit('eventname',obj) 

,在父控制器中,您可以使用

$rootScope.$on('eventname',function(event,data){
    console.log(data)
    })

通过这种方式,您可以将子控制器中的变量访问到最顶层的根目录,其中eventname是您要广播的任何事件