我的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/

10-08 18:48