AngularJS - 为什么我的范围变量在调用$ on时不会刷新?

时间:2017-03-07 19:27:25

标签: javascript angularjs binding angularjs-scope angular-directive

在我的主app控制器中,我调用了这个async方法,它在完成后广播一个事件(loadData)。在事件处理程序中,我将一些数据加载到我的$ scope.layers数组中。但我认为没有任何内容。

事件正在被触发,数据被填充到layers数组中。

这是观点:

<div ng-repeat="layer in layers track by $index">
     <span>{{layer.name}}</span>
</div>

这是我的控制器

app.controller('MainPanelCtrl',['$scope', 'myService', function($scope, myService){
'use strict';

myService.loadData();

$scope.$on('loadDoneEvent', function () {
    $scope.layers = myService.getLayers();
    //$scope.$apply() // why when adding this its working?
});}]);

这是服务:

app.factory('myService', ['$rootScope', '$http', function ($rootScope, $http) {
    'use strict';
     var data;

    var loadData = function (compId) {
        $http.get("someUrl").then(function (response) {
            data = response.data;
            $rootScope.$broadcast('loadDoneEvent');
        });
    };
  return {
           loadData : loadData 
        };
    }]);

我无法得到我在这里失踪的东西......

我知道我可以使用承诺,它会起作用。但是我想能够多次调用这个loadData函数并且我的不同UI组件能够响应。不确定我是否可以通过承诺得到这个。

我找到了this link并且它正在为他工作,所以我无法理解为什么它不适合我...

0 个答案:

没有答案