2014-01-27 150 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