【问题标题】:knockoutjs select data-bind binding is given unexpected resultknockoutjs 选择数据绑定绑定给出了意外的结果
【发布时间】:2013-03-25 11:15:28
【问题描述】:

我刚开始使用 knockoutjs。我尝试将选择选项值与敲除数据绑定属性绑定。但我无法将数组值作为不同的选项。 它将填充为 coma 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>

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

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

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

    所以你只需要写:

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

    虽然你如何覆盖 self.availableStates 定义很奇怪......

    【讨论】:

    • 谢谢你它现在正在工作......你的第二点是什么我没有得到你......?
    • 在您的示例中,您定义了self.availableStates = new Array();,然后用self.availableStates = ko.observableArray(self.availableStates); 覆盖它。 observableArray 还实现了大多数数组函数,因此您可以编写例如 self.availableStates = new observableArray(); self.availableStates.push("State1");
    猜你喜欢
    • 2014-12-31
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2012-10-09
    • 1970-01-01
    • 2013-08-09
    • 2016-01-13
    相关资源
    最近更新 更多