淘汰阵列绑定不起作用

时间:2014-08-15 13:11:28

标签: javascript knockout.js knockout-2.0

monkeyStuff执行我想要的操作,如果我在输入字段中写入,它会更新范围内容。 但为什么它不适用voteStuff

在行动中看到它: Fiddle

<body>
    <div id="monkeyStuff">
        <input type="text" data-bind="value:monkey" />
        <span data-bind="text:monkey"></span>
    </div>
    <hr>
    <div id="voteStuff">
        <div data-bind="text: test"></div>
        <ul data-bind="foreach: voters">
          <li>
            <input type="text" data-bind="value:name" />
            <span data-bind="text:name"></span>
          </li>
        </ul>
    </div>

    <script>        
        var vm = {
            monkey: ko.observable()
        };
        vm.monkey("Quak");
        ko.applyBindings(vm, document.getElementById('monkeyStuff'));

        var model = {
            test: 'Test address text',
            voters: ko.observableArray([
                { name: 'First Voter' },
                { name: 'Second Voter' }
            ])
        };

        ko.applyBindings(model, document.getElementById('voteStuff') );

    </script>
</body>

编辑:好的就像这样:

  voters: ko.observableArray([
        { name: ko.observable('First Voter') },
        { name: ko.observable('Second Voter') }
    ])

但是有没有办法自动为投票数组中的每个属性执行此操作?

1 个答案:

答案 0 :(得分:2)

您需要使name voters中元素的ko.observableArray属性也可观察,这样您就可以使用已实现的绑定更改这些属性:

    voters: ko.observableArray([
        { name: ko.observable('First Voter') },
        { name: ko.observable('Second Voter') }
    ])

工作示例:http://jsfiddle.net/he2zoa3d/2/