2013-10-22 83 views
1

我有一個這樣的服務(修改爲簡潔(和隱私)):修改角承諾

angular.module('services', []) 
.factory('obj', function ($http) { 
    return { 
     get: function() { 
      return $http.get('/obj').then(function (response) { 
       return response.data; 
      }); 
     } 
    } 
}); 

它用於這樣的:$scope.obj = obj.get();到從服務器檢索的對象。

我可以顯示對象並修改它的鍵的最大值,除非我似乎無法修改任何包含數組或其他對象的鍵。我得到一個類型錯誤:

TypeError: Cannot call method 'indexOf' of undefined 

我想添加到承諾的對象中存在的數組的內容。我可以查看它們,只是當我嘗試添加或刪除它們時,angular認爲它是未定義的。

這是怎麼發生的?

回答

3

使用.then在你的控制器,做回調的邏輯:

obj.get().then(function(data) { 
    $scope.obj = data; 
    //do stuff 
}); 
+0

哇。完善。謝謝。 – alf

+0

我會接受,當它讓我。另外,你能解釋一下這裏到底是什麼嗎?我是一個n00b。 – alf

+0

當然,一旦整個後端服務執行完畢,基本上你會繼續承諾模式並將返回的數據賦給'$ scope'變量。有關更詳細的解釋,請查看:http://www.benlesh.com/2013/02/angularjs-creating-service-with-http.html – tymeJV