Jquery KnockoutJS更改复选框更改事件的输入值和文本
我有一个技能列表,当用户检查技能时,如果选中,将显示多年的输入。我的问题是,如果用户输入了一年,但随后取消了对技能的检查,那么数年的值仍然与输入上的文本一起保存在observable中。我不确定是否需要使用事件处理程序、订阅函数或仅使用ko计算函数清除该值Jquery KnockoutJS更改复选框更改事件的输入值和文本,jquery,knockout.js,Jquery,Knockout.js,我有一个技能列表,当用户检查技能时,如果选中,将显示多年的输入。我的问题是,如果用户输入了一年,但随后取消了对技能的检查,那么数年的值仍然与输入上的文本一起保存在observable中。我不确定是否需要使用事件处理程序、订阅函数或仅使用ko计算函数清除该值 年: var应用程序=函数(){ this.ApplicationSkills=ko.observearray(); }; var ApplicationSkill=函数(){ var self=这个; this.Skill_Skil
年:
var应用程序=函数(){
this.ApplicationSkills=ko.observearray();
};
var ApplicationSkill=函数(){
var self=这个;
this.Skill_SkillTypeID=ko.可观察(0);
this.Skill_Years=ko.observable().extend({maxLength:2,number:true});
此.Skill_Checked=ko.可观察(假);
this.Skill_SkillTypeName=ko.observable();
};
var vm=新应用程序();
ko.应用绑定(vm);
var skill=new ApplicationSkill()
skill.skill\u SkillTypeID(1);
skill.skill_SkillTypeName(“数据输入”);
vm.ApplicationSkills.push(技能);
我会把它作为一个计算:
var skillYears = ko.observable();
this.Skill_Years = ko.computed({
read: function () { return this.Skill_Checked() ? skillYears() : undefined; },
write: skillYears
}, this);
你试过使用击倒扩展器吗@我没有。我对KO还是个新手,所以我对它所能做的一切都不熟悉。我会检查它。在实现您的解决方案时,IE7/8中出现以下错误:SCRIPT438:对象不支持属性或方法'Skill_Checked'ViewModel.js,第387行字符29您的
应用程序kill
ViewModel中是否存在Skill_Checked
属性?@Esteban它确实存在。我将该对象用于span标签和文本框上的可见:绑定,因为Skill\u Years
现在取决于Skill\u Checked
您需要先定义Skill\u Checked
。@Brandon我犯了一个愚蠢的错误。谢谢,现在工作得很好。
var skillYears = ko.observable();
this.Skill_Years = ko.computed({
read: function () { return this.Skill_Checked() ? skillYears() : undefined; },
write: skillYears
}, this);