Javascript knockoutjs删除单击绑定

Javascript knockoutjs删除单击绑定,javascript,knockout.js,Javascript,Knockout.js,我使用knockoutjs,有一个带有点击绑定的按钮(id='enter'): <input id="enter" type="button" value="Enter" data-bind="click: function(data,event) { console.log('do something'); console.log('do something more');}"/> 感谢并问候您应该将单击绑定的所有逻辑放在viewModel中。下面是与内联单击绑定等效的VM函数

我使用knockoutjs,有一个带有点击绑定的按钮(id='enter'):

<input id="enter" type="button" value="Enter" data-bind="click: function(data,event) { console.log('do something'); console.log('do something more');}"/>

感谢并问候

您应该将
单击
绑定的所有逻辑放在viewModel中。下面是与内联
单击
绑定等效的VM函数

//这是我的数据模型
var ViewModel=函数(){
this.clickFunction=函数(数据、事件){
log('do something');
log('do other');
console.log(数据、事件);
};
};
应用绑定(新的ViewModel())

您可以做的一件事是创建一个包含函数的可观察对象,您可以根据表单中事物的状态对其进行更改。
单击
将绑定到该可观察对象的调用

函数thing1(){
vm.output('thing1');
}
函数thing2(){
vm.output('thing2');
}
函数thing3(){
vm.output('thing3');
}
var vm={
动态功能:ko.可观察(thing1),
changeIt:function(){
调试(“任何”);
if(vm.dynamicFunction()=thing3){
vm.dynamicFunction(thing2);
}否则{
vm.dynamicFunction(thing3);
}
},
输出:ko.可观察(“”)
};
ko.应用绑定(vm)

您可以使用ko.computed返回到单击绑定需要执行的函数,请参见示例:

函数AppViewModel(){
this.choosenAction=ko.可观察(“1”);
var action1=函数(){
console.log(“操作1完成!!!”)
};
var action2=函数(){
console.log(“操作2完成!!!”)
};
this.onClickTest=ko.computed(函数(){
如果(+this.chooseAction()==1)
返回操作1;
其他的
返回操作2;
},这个);
}
//激活knockout.js
应用绑定(新的AppViewModel())

行动1
行动2



测试你有视图模型吗?没有。取而代之的是在viewmodel中设置第一次单击更新状态,这样下次单击时,模型本身就知道要执行不同的操作。(@indubitablee说得很好,你确实有一个viewmodel,对吧?)这看起来像是完全滥用了Knockout和MVVM。你需要详细说明你想要实现什么,也许还需要显示你当前的视图模型。是的,我有一个视图模型…我的模型模拟一个缓冲区。我可以添加/删除缓冲区中的元素,并更新视图。在“输入单击”上执行的操作取决于以前单击的按钮,这些按钮会更改缓冲区内容。例如,如果单击按钮1,且缓冲区在按钮1动作之后为空,则按enter键可导致新动作1。如果单击按钮1且缓冲区不为空,则单击绑定不应更改我的模型模拟缓冲区。我可以添加/删除缓冲区中的元素,并更新视图。在“输入单击”上执行的操作取决于以前单击的按钮,这些按钮会更改缓冲区内容。例如,如果单击按钮1,且缓冲区在按钮1动作之后为空,则按enter键可导致新动作1。如果单击按钮1且缓冲区不为空,则不应单击绑定change@knowledge查看编辑。我使用了其他按钮来更改enter
click
事件的功能
var enterButton = document.getElementById('enter');
var newClickBind = "click: function(data,event) { console.log('muh'); }";
enterButton.setAttribute('data-bind',newClickBind);