knockoutjs select data-bind binding给出了意想不到的结果

时间:2013-03-25 11:15:29

标签: javascript knockout.js

我刚刚开始使用knockoutjs。我尝试将select选项值与knockout data-bind属性绑定。但是我无法将数组值作为不同的选项。 它将作为昏迷separetd填充。 我附上了我试过的示例代码。我希望其他人也会面临同样的奇怪错误。

self.availableStates = new Array(); 
for (var i=0;i<self.allStates.length;i++)
{
if (self.allStates[i]['name'] != null)
self.availableStates.push(self.allStates[i]['name'])
}
self.availableStates = ko.observableArray([self.availableStates]);

期待结果:

<select id="drpDwnLst" data-bind="options: availableStates">
    <option value="">State4</option>
    <option value="">State3</option>
    <option value="">State2</option>
    <option value="">State1</option>
</select>

实际结果

<select id="drpDwnLst" data-bind="options: availableStates">
    <option value="">State4,State3,State2,State1</option>
</select>

1 个答案:

答案 0 :(得分:1)

您在输出中看到的是在数组上调用toString()的效果。

你得到这个结果是因为你的availableStates 已经是一个数组所以你不需要再将它包装到一个[]

的数组中

所以你需要写一下:

self.availableStates = ko.observableArray(self.availableStates);

虽然您如何覆盖self.availableStates定义......

很奇怪