api使用Knockout.js。我想动态绑定下拉列表。这是我用于淘汰赛的代码
function LeadModel() {
var that = this;
that.Saleslist = ko.observableArray("") //Sales list is my model
}
function SalesEmpNm() {
var that = this;
that.LeadModel = new LeadModel();
that.reset = function () {
that.LeadModel.Salesid("");
that.LeadModel.SalesNme("");
};
that.submit = function () {
var json1 = ko.toJSON(that.LeadModel);
$.ajax({
url: '/api/values',
type: 'GET',
dataType: 'json',
data: json1,
contentType: 'application/json; charset=utf-8',
success: function (data) {
var message = data.Message;
}
});
};
};
var _vm = new SalesEmpNm();
$(function () {
ko.applyBindings(_vm);
});
这是我的文字
销售名称:
<select id="ddlSales" name="ddlSales"
data-bind="options:$root.LeadModel.Saleslist, Value:'Salesid',
Text:'SalesNme', Value:LeadModel.Salesid">
</select>
请求建议我动态绑定下拉列表的答案。 谢谢&amp;此致
答案 0 :(得分:2)
我无法看到您在哪里填充Saleslist数组。 但是,以下情况适用于您的情况:
<select id="ddlSales" name="ddlSales"
data-bind='optionsCaption: "[Please Select]", options: _vm.LeadModel.Saleslist(), optionsText: "SalesNme", optionsValue: "Salesid"'></select>
请注意,我正在绑定像_vm.LeadModel.Saleslist()
您的模型中的另一个问题是LeadModel
没有您在Salesid
函数中访问的SalesNme
和reset
属性:
that.reset = function () {
that.LeadModel.Salesid("");
that.LeadModel.SalesNme("");
};
答案 1 :(得分:0)
问题可能是您正在使用空字符ko.observableArray("")
初始化""
,但不支持此字符串ko.observableArray()
。您可能只需要将其更改为Salesid
。
但正如@Ahsan所说,您粘贴的代码中可能还有其他问题,例如未定义的SalesNme
和success
,而您的Saleslist
处理程序并未填充正如我所预料的那样{{1}}。
答案 2 :(得分:0)
也许问题是因为您没有在Saleslist
中提供任何值。
这可以解决这个问题:
this.Saleslist = ko.observableArray([
{ Salesid: 1, SalesNme: "One" },
{ Salesid: 2, SalesNme: "Two" }
});