2013-06-23 144 views
0

我有說,數據服務:

myApp.factory('locationsData', function ($resource) { 


return $resource('/api/Location/:id', { id: '@id' }, { update: { method: 'PUT' } });}); 

然後我用這些位置來填充在我看來下拉:

<select ng-model="locationId" ng-options="item.LocationId as item.LocationName for item in locations"></select> 

我想在我的控制器中設置下拉列表的初始值爲:

$scope.locationId = 8; 

這不起作用,我認爲是因爲$ resourc的異步性質電子 - 它沒有列表,所以我無法設置它。

我知道$ q被設計爲解決這個問題,但不知道如何創建的承諾,並設置

$scope.locationId = 8; 

它滿足

後,我讀了$ Q $和資源文檔,但我還沒有看到一個很好的代碼示例,說明如何做一個簡單的獲取,比如我在做什麼,然後在獲得承諾完成後執行一些函數/動作。

謝謝。

回答

0

我相信某處控制器,你會做

$scope.locations=locationsData.query(); 

查詢或獲取方法可以採取的成功和錯誤的功能參數。像

locationsData.query(function(data){ 
}); 

東西,所以你應該設置

$scope.locationId = 8; 

查詢成功函數內。

+0

所以我不需要$ q?這似乎工作。除ng-model屬性位於對象上時,例如當我嘗試在控制器中訪問它時,例如'$ scope.location.locationId'。 '$ scope.location.locationId = 8;'它不去。我可以通過在控制器中執行'$ scope.location = [];'來解決這個問題,但是當我提交表單時,位置對象是空的。我可能在這裏做一些愚蠢的事情。 – user2375056

+0

你不知道。只要你在html模板中的綁定是ng-model =「location.locationId」,$ scope.location.locationId也會工作。 – Chandermani