2014-01-27 110 views
0

我有一个服务方法items.getItems();角js:控制器和服务

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> 

但doens't work

+0

这可能不是真正的问题,但我认为使用'function'作为'function'的名字,即使被Javascript允许,也是一件坏事(TM)。除了文件化的失误之外,我不认为它会随着IE9而降低。 –

+0

什么是“data-dy-item”和“data-items”?他们是角度指令吗? – ProxyTech

+0

这是一个指令 – user880386

回答

0

该调用是异步的。当服务方法返回时,回调尚未被调用。所以控制器函数将总是返回未定义的(或之前的selectedItemsUpdate值)。 AJAX响应需要返回以调用回调。因此,代码应该是:

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

和HTML应

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

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

+1

我觉得这只是猜测工作:原来的问题不是很清楚。不过,希望你是对的。 – meilke