角度js:控制器和服务

时间:2014-01-27 09:53:53

标签: angularjs angularjs-scope

我有一个服务方法items.getItems();

getItems: function(callback){      
            $http({
                 url: url,
                 method: "POST"
             }).success(function(data, status){             

                             callback(data);                        
                        }                                                                   
             }).error(function(err){
                 console.error('Error: %s error: %O', 'getLanguages[*] failed.', err);
             });
        }   

我在我的控制器中使用它,我想在函数内部调用它:

$scope.param= function(){
 items.getItems(function(data){
        $scope.selectedItemsUpdate = data;
    });
return $scope.selectedItemsUpdate}

并在我的html页面中做了类似的事情:

<div data-dy-item data-items="param()"                        
                </div>

但它不起作用

1 个答案:

答案 0 :(得分:0)

调用是异步的。当服务方法返回时,尚未调用回调。因此控制器函数将始终返回undefined(或selectedItemsUpdate的先前值)。 AJAX响应需要返回才能调用回调。所以代码应该是:

$scope.param = function(){
 items.getItems(function(data) {
    $scope.selectedItemsUpdate = data;
  });
}

HTML应该是

<div data-dy-item data-items="selectedItemsUpdate"></div>

当然,必须在某个时候调用params()函数。在实例化控制器或单击某个按钮时,可能应该调用它。