2014-01-28 65 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]; 
}) 

无法在这里测试,但它应该工作。

相关问题