KnockoutJS将数组中的第一个元素绑定到div

时间:2014-01-20 21:36:51

标签: javascript knockout.js

Jsfiddle

我正在尝试将数组的第一个元素绑定到div但它却失败了。为什么约翰不会出现在div中?

<div data-bind="text: seedData[0].firstName"></div>
<select data-bind="options: seedData,
                        optionsText: 'firstName',
                        optionsValue: 'ID',
                        value: data.selectedValue">
</select>

var vm = {

    // Simulated seed data from server
    seedData: ko.observableArray([
    {
        ID: 1,
        firstName: 'John',
        value: '333'
    },
    {
        ID: 2,
        firstName: 'Bob',
        value: '333'
    },
    {
        ID: 3,
        firstName: 'Amy',
        value: '333'
    }]),

    // Simulated data from server
    data: {
        title: ko.observable('This is a sample'),
        selectedValue: ko.observable(2)
    }
};
ko.applyBindings(vm);

1 个答案:

答案 0 :(得分:9)

由于您正在访问observable的值,您必须记住它是一个函数。当绑定到一个observable(而不是它的子属性)时,你可以省去这个函数,Knockout会为你做。但是在访问索引时,您必须使用该函数。

所以使用:

<div data-bind="text: seedData()[0].firstName"></div>
<select data-bind="options: seedData,
                        optionsText: 'firstName',
                        optionsValue: 'ID',
                        value: data.selectedValue">
    </select>

http://jsfiddle.net/VLTFB/386/