简体   繁体   English

如何在angularjs中使用rootScope

[英]How to use rootScope in angularjs

I have a data in my commonservice and I want to use the data in my template and I will assign a rootscope and use it but it isn't working right now and I am not sure what's wrong can anyone please suggest help. 我的commonservice中有一个数据,我想使用模板中的数据,我将分配一个rootscope并使用它,但它现在无法正常工作,而且我不确定有什么问题可以请他人提出帮助。

My js: 我的js:

function addGoogleAddress(id, data, scope) {
    var places = new google.maps.places.Autocomplete(document.getElementById(id));
    google.maps.event.addListener(places, 'place_changed', function () {
        var place = places.getPlace();
        if (place && place.address_components) {
            for (var i = 0; i < (place.address_components.length); i++) {
                if (place.address_components[i].types[0] === 'locality') {
                    data.city.key = '1001';
                    data.city.name = place.address_components[i].long_name.toString();
                } else if (place.address_components[i].types[0] === 'administrative_area_level_1') {
                    data.state.key = '1001';
                    data.state.name = place.address_components[i].long_name.toString();
                } else if (place.address_components[i].types[0] === 'country') {
                    data.country.key = '1001';
                    data.country.name = place.address_components[i].long_name.toString();
                }
            }
        }
    });
    $timeout(function () {
        $('#' + id).removeAttr('placeholder');
    }, 500);
    $rootScope.data = data;
}

My controller: 我的控制器:

  console.log($rootScope.data)

Here i am getting undefined. 在这里,我变得不确定。

You can not broadcast data directly, you need to broadcast event and pass parameter like follows, 您不能直接广播数据,需要广播事件并传递如下参数,

Note: I am assuming here you have injected dependency 注意:我假设您在这里注入了依赖性

 $rootScope.$broadcast('eventName',data);

Then in controller like follows - 然后在控制器中如下所示-

$scope.$on('eventName',function(event,data){
console.log('data---',data);
})
app.controller('ctrl1',['$scope','$rootScope',function($scope,$rootScope) {
    $scope.xyz = $rootScope.xyz;
    //console.log($scope.xyz); hey
}]);

app.run(function($rootScope){
    $rootScope.xyz ="hey";
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM