2014-01-28 64 views
0

我有以下HTML:如何在填充後從選擇列表中選擇一個項目?

<span>SubTopic {{ modal.option.sSubTopic }}</span> 
<select data-ng-model="modal.option.sSubTopic" 
    data-ng-options="item.id as item.name for item in modal.option.subTopics"> 
</select> 

在我的控制器

$http.get(url, { cache: us.oneDayCache }) 
    .success(function (data) { 
     $scope.modal.option.subTopics = data; 
     $scope.modal.option.sSubTopic = "2"; 
    }) 

後,得到{{}}值設置爲2,但沒有選擇我選擇的第二個項目。

我是這樣做的嗎?

+0

檢查item.id的類型,因爲我相信角度使用===用於比較模型屬性和選定的項目鍵。 –

+0

你可以發佈你的數據對象看起來像 – TheSharpieOne

回答

1

您在ngOptions中指定該字段的值爲該項目的id,其中item.id as。模型值需要與您要選擇的dataid的值相匹配。如果你想第二個對象,這將是data[1].id

$http.get(url, { cache: us.oneDayCache }) 
    .success(function (data) { 
     $scope.modal.option.subTopics = data; 
     $scope.modal.option.sSubTopic = data[1].id; 
    }); 

演示:http://jsfiddle.net/TheSharpieOne/gteX9/2/

+0

對不起,我應該改變這一點。我實際上嘗試過和沒有引號。兩者都不適合我。 – Alan2

+0

謝謝 - 我試過了你的演示。希望我的代碼正在工作。我仍然會繼續嘗試。看起來很簡單的事情。你認爲有沒有範圍問題? – Alan2

+0

我添加了一個真正的AJAX的新演示(這是一個痛苦,jsfiddle希望有效載荷以某種方式返回它),使用數字字符串仍然有效。也許當您以前嘗試使用數字時,字符串版本仍然被緩存。 – TheSharpieOne

0

數據-NG-模型包含在其中選定值將被存儲的模型。在你的情況下,這意味着你會將選定的值存儲在2中。這看起來不正確。也許你可以嘗試這樣的:

<select ng-model="selectedItem" ng-options="item.id as item.name for item in modal.options.subTopics"></select> 
<pre>{{selectedItem}}</pre> 

$ scope.selectedItem包含您選擇的項目。現在您要選擇數據對象中的第二項。你可以通過在你的控制器中做到這一點:

$http.get(url, { cache: us.oneDayCache }) 
.success(function (data) { 
    $scope.modal.option.subTopics = data; 
    $scope.selectedItem = data[1]; 
}) 

無法在這裏測試,但它應該工作。

相關問題