具有多个无线电输入的AngularJS ng-repeat

时间:2014-07-15 16:05:41

标签: javascript angularjs input radio ng-repeat

对于有多个无线电输入的人(是/否),我的ng-repeat问题很小。输入名称应该不同,因为name =" person.name"但它的行为就像它们都是一样的。有人知道如何解决这个问题吗?

http://jsfiddle.net/Chotkos/EbU8g/

HTML:

<form name="myForm" ng-controller="MyCtrl">
    <p>Decisions</p>
    <ul>
        <li ng-repeat="person in people">
            <label>{{person.name}}
                <input type="radio" ng-model="person.decision" name="person.name" value="Yes" />
                <input type="radio" ng-model="person.decision" name="person.name" value="No" />
            </label>
        </li>
    </ul>
</form>

JS:

function MyCtrl($scope) {
    $scope.people = [{
        name: "John"
    }, {
        name: "Paul"
    }, {
        name: "George"
    }, {
        name: "Ringo"
    }];
}

3 个答案:

答案 0 :(得分:5)

您需要在该上下文中使用{{ person.name }},而不是"person.name"

答案 1 :(得分:2)

我不知道你为什么被投票。你的问题很好。因此,您使用的是HTML表单中传统的name属性。由于name不是角度的一部分,因此您需要将person.name包装在大括号name="{{person.name}}"中,以便角度知道要解析它。

答案 2 :(得分:0)

请看这里:http://jsfiddle.net/Chotkos/EbU8g/ 发生这种情况是因为您将所有输入都包装到标签标签

  <form name="myForm" ng-controller="MyCtrl">
        <p>Decisions</p>
        <ul>
            <li ng-repeat="person in people">
                <label>{{person.name}}</label>
                <input type="radio" ng-model="person.decision" name="person.name" value="Yes" />
                <input type="radio" ng-model="person.decision" name="person.name" value="No" />
            </li>
        </ul>
    </form>