Knockout.js选择一个选项后,生成另一个具有相同选项的select,所选选项除外
我是一个Knockout.js新手,我正在尝试创建一个“简单”的表单 我用ajax加载html视图,并应用绑定 用户可以从select中选择一些加载项(从服务器抛出到DOM中,它不是作为JSON加载的),在选择一个有效的加载项后,它应该创建另一个具有相同选项的select,除了先前选择的加载项,等等,以确定select中有多少加载项 到目前为止我所拥有的Knockout.js选择一个选项后,生成另一个具有相同选项的select,所选选项除外,knockout.js,Knockout.js,我是一个Knockout.js新手,我正在尝试创建一个“简单”的表单 我用ajax加载html视图,并应用绑定 用户可以从select中选择一些加载项(从服务器抛出到DOM中,它不是作为JSON加载的),在选择一个有效的加载项后,它应该创建另一个具有相同选项的select,除了先前选择的加载项,等等,以确定select中有多少加载项 到目前为止我所拥有的 <table class="new_account new_account_details"> <tr data-b
<table class="new_account new_account_details">
<tr data-bind="foreach: new Array(plan_addons_num())">
<td>
<select class="plans_plan_addon">
<option value="">Select</option>
<option value="1">Addon1</option>
<option value="2">Addon2</option>
</select>
</td>
</tr>
</table>
var viewModels = {
planPlans: function () {
this.plan_addons_num = ko.observable(1);
this.plan_addon = ko.observable();
this.plan_addons = ko.observableArray();
// ko.computed(function () {
// if (Number(this.plan_addon()) > 0) {
// this.plan_addons_num(this.plan_addons_num() + 1);
// }
// }, this);
}
};
挑选
附加1
附加2
var视图模型={
平面图:功能(){
此.plan_addons_num=ko.可观察(1);
this.plan_addon=ko.observable();
this.plan_addons=ko.observearray();
//ko.computed(函数(){
//if(编号(此.plan_加载项())>0){
//this.plan\u addons\u num(this.plan\u addons\u num()+1);
// }
//(本),;
}
};
plan_插件我希望它是当前选定的插件,但如果我将它作为值绑定到foreach中,它就不起作用
我可以将可用的插件设置为HTML中的JSON代码,以便viewmodel在jquery中使用它(如果有帮助的话)。
我怎样才能做到这一点呢?在使用淘汰赛时,我觉得先考虑一下模型中的东西会有所帮助。计划好模型中的所有内容,稍后再考虑标记,因为标记应该只是模型状态的反映 我不太确定您使用现有绑定的目的是什么,但下面是我将如何创建您的选择控件。在先前选择的选项数组上创建foreach绑定,然后添加一个包含其余选项的附加选择
<table class="new_account new_account_details">
<tr>
<!--ko foreach: plan_selectedAddons-->
<td>
<select class="plans_plan_addon" data-bind="options: $parent.plan_addons, value: $data" disabled></select>
</td>
<!--/ko-->
<td>
<select class="plans_plan_addon" data-bind="options: plan_remainingOptions, optionsCaption: 'Select', event: { change: selectAddon }"></select>
</td>
</tr>
</table>
下面是一个完整的小提琴来演示javascript:
至于最初填充选项数组,是的,我会将其包含在JSON中,而不是试图从DOM上现有的select中刮取它,但您可以使用jQuery完成这一操作,然后隐藏原始的select。非常感谢您的回复,敲除非常棒!