Knockout.js 在单击按钮时动态添加下拉列表,并使用knockout绑定值

Knockout.js 在单击按钮时动态添加下拉列表,并使用knockout绑定值,knockout.js,Knockout.js,我必须在点击按钮时动态添加下拉列表。我试图更新数组,但它没有在下拉列表中显示值 <a data-bind='click:addBillItem'>Add</a> 添加 我的视图模型如下所示: function AssignmentViewModel() { self.billDescriptions = ko.observableArray(); this.addBillItem = function() { var = '<selec

我必须在点击按钮时动态添加下拉列表。我试图更新数组,但它没有在下拉列表中显示值

<a data-bind='click:addBillItem'>Add</a>
添加
我的视图模型如下所示:

function AssignmentViewModel() {
self.billDescriptions = ko.observableArray();

this.addBillItem = function() {
            var = '<select id="ddlBillItemDescription" data-bind="';
            html += 'options:billDescriptions,';
            html += 'optionsText:"ItemName",';
            html += 'optionsCaption: "Select Bill Description",';
            html += 'optionsValue:"ItemName",';
            html += 'value:BillItemDescription';
            html += '</select>';
            $("#dropdown").append(html);
            self.billDescriptions(billItemDescriptions);
var billItemDescriptions = GetBillItemDescriptions();
self.billDescriptions(billItemDescriptions);
        };
}
ko.applyBindings(new AssignmentViewModel());
函数赋值视图模型(){
self.billDescriptions=ko.observableArray();
this.addBillItem=函数(){

var='我建议有两个选项:

1) 如果您只需要这些下拉列表中的一个,请将其放入带有
If
绑定的标记中。然后,您只需翻转绑定到
If
的标志即可显示下拉列表


2) 如果要创建多个下拉列表,请在标记中设置一个
foreach
绑定,并使用模板中的下拉列表(使用
选项
绑定)。然后,在viewmodel中,有一个表示各个下拉列表的对象数组(这些是将绑定到
选项
绑定的内容。

@Origineil我在页面加载上已经有了一个ddlBillItemDescription下拉列表,并对其应用了绑定。我想将数据绑定到我在按钮上添加的下拉列表。单击应用绑定是绑定数据的方式。如果在执行此操作时DOM中不存在html,则没有绑定它。请参阅@Origineil,谢谢,使用您的示例进行了尝试,但我遇到了一个错误,如“您无法对同一元素多次应用绑定”。正如预期的那样,如果您多次单击它。请描述(在您的帖子的编辑中)您试图达到的目的是为了阐明为什么要以这种方式处理问题。无论哪种方式,直接
jQuery
DOM操纵都不是理想的“击倒”方式,您通常可以严格通过绑定组合来实现所需的行为。正是我曾经采用的方法,但必须参加会议:)。