如何使用knockout.js动态地将数据绑定到下拉列表?

时间:2013-08-08 11:30:23

标签: jquery asp.net-mvc-4 knockout.js jsonp single-page-application

我是knockout.js的新手。我无法使用敲除js将数据从api绑定到下拉列表。

来自api和下拉列表的我的Json数据是:

[{
ContactID: 0,
FirstName: "Aaa",
LastName: "bbb",
MobileNumber: null,
StartDate: "0001-01-01T00:00:00",
EndDate: "0001-01-01T00:00:00"
},
{
ContactID: 0,
FirstName: "Ccc",
LastName: "ddd",
MobileNumber: null,
StartDate: "0001-01-01T00:00:00",
EndDate: "0001-01-01T00:00:00"
}
]
<select id="selectmenu1" name="" data-theme="c" data-bind="optionsCaption: 'Choose...'">        </select> 

我只是将firstname,lastname,contactID绑定到下拉列表,并将firstname和lastname显示为text,contactID是该项的value字段。 有人可以就此提出一些建议吗?

2 个答案:

答案 0 :(得分:12)

您需要使用options binding,您需要指定:

  • options中的项目数组(请参阅文档示例3)
  • 您需要将optionsValue: 'ContactID'设置为将ContactID作为值
  • 您需要在构建选择文本的optionsText中指定一个函数(参见文档示例4)

所以你的最终装订看起来像是:

<select id="selectmenu1" name="" data-theme="c" 
  data-bind="options: contacts, 
             optionsValue: 'ContactID', 
             optionsText: function(i) { return i.FirstName + ' ' + i.LastName }, 
             optionsCaption: 'Choose...'">        
</select>

演示JSFiddle.

答案 1 :(得分:0)

您可以使用knockout mapping插件。更多细节是 here

而且你也可以看得很棒 tutorial about how to load and save data