我的HTML文件中包含以下内容:
<td style="width: 200px;">
<span ng-repeat="list in listGroups">
<label for="{{ list.description }}" />{{ list.description }}</label>
<input ng-model="$parent.listGroup" id="listGroup-{{ list.value }}" name="listGroups" value="{{ list }}" type="radio" />
</span>
</td>
listGroups包含:
[
{
"description": "New by Territory",
"group": "product",
"type": "new"
},
{
"description": "New by Genre",
"group": "genre",
"type": "new"
},
{
"description": "Charts by Territory",
"group": "product",
"type": "chart"
},
{
"description": "Charts by Genre",
"group": "genre",
"type": "chart"
}
]
当我单击单选按钮时,listGroup(在ng-model中设置)变为例如:
{"description":"New by Genre","group":"genre","type":"new"}
当我用
typeof $scope.listGroup
查看listgroup时,我发现它现在是一个字符串!因此,我无法在HTML页面其余部分的其他绑定(bind)中访问它的属性。
在这种情况下,我想要
ng-show="listGroup.group == 'genre'"
这里发生了什么,更重要的是,如何使它做我想做的事情,即将对象保留为对象?
谢谢大家
戴夫
最佳答案
问题在于输入的value
属性仅接受字符串,而不接受对象(请检查here)。当执行此操作:value="{{ list }}"
时,基本上就是在进行input.value = list.toString()
。
一种可能的解决方法是使用$index
指令的ng-repeat
。示例:http://jsfiddle.net/bmleite/cKttd/