在多个绑定的KnockoutJs订阅函数中完成相同的任务
Same task to be done inside multiple binded KnockoutJs subscribe function
我正在处理KnockoutJs,我使用了带有文本框的valueUpdate:'afterkeydown'和带有select元素的valueUpdate:'change'来订阅相应的更改并执行相同的任务。我想在每个函数的值更改后通过subscribe调用相同的函数。
为了更清楚地表明这一点,我看到了以下内容:
<input type="text" data-bind="value: val1, valueUpdate: 'afterkeydown'"/>
<input type="text" data-bind="value: val2, valueUpdate: 'afterkeydown'"/>
<select data-bind="value: sel1, valueUpdate:'change'">
<select data-bind="value: sel2, valueUpdate:'change'">
在javascript中,我订阅了这样的每一个更改:
viewModel.val1.subscribe(function () {
doSameWork();
});
viewModel.val2.subscribe(function () {
doSameWork();
});
viewModel.sel1.subscribe(function () {
doSameWork();
});
viewModel.sel2.subscribe(function () {
doSameWork();
});
################################
var doSameWork = function(){ alert('some work done!'); };
若我对每个valueUpdate调用相同的函数,那个么我想知道是否有任何方法可以在单个订阅中订阅每个valueUpdate(保存LOC)或类似的东西,而不是单独订阅四个值更新,如果我必须对每个值更新都做相同的事。提前感谢。:)
您只能创建一个事件处理程序,并将其"共享"给所有可观察的
var ViewModel = function () {
var self = this;
self.onValueChanged = function (newValue) {
// your task
alert('some work done!');
};
self.val1 = ko.observable();
self.val1.subscribe(self.onValueChanged);
self.val2 = ko.observable();
self.val2.subscribe(self.onValueChanged);
self.sel1 = ko.observable();
self.sel1.subscribe(self.onValueChanged);
self.sel2 = ko.observable();
self.sel2.subscribe(self.onValueChanged);
};
查看小提琴
@Accsharma:
第一次评估计算值时,ko引擎检测可观测值和计算值之间的相关性。所以当你写这篇文章时:
ko.computed(function(){ val1(); val2(); sel1(); sel2(); doSameWork(); });
Ko将val1、val2-sel1和sel2注册为计算的的依赖项。这意味着,如果val1或val2..发生变化,则计算值也可能发生变化。因此,当可观测值(如val1)发生变化时,需要对计算值进行评估。这就是调用doSameWork函数的原因。
我希望它能有所帮助。
相关文章:
- 对多个任务使用对象中的anonyus函数
- Nodejs 异步任务和匿名函数
- Node.js异步并行“;类型错误:任务不是函数;
- 我需要将一个参数从另一个任务传递给gullow任务,或者用runSequence调用的函数替换一个任务
- 我可以组合成一系列管道函数,以便在多个任务中重用吗
- 如何在Javascript中阻止函数并等待其他任务完成
- 在 gulp 任务中使用 node.js 函数
- 通过函数填充 Grunt 任务配置的“文件”属性
- node.js如何处理多任务函数
- 在多个绑定的KnockoutJs订阅函数中完成相同的任务
- 如何在一个函数中定义多个任务并在javascript中使用
- Javascript -一个函数中的多个任务无法工作
- Gulp最小化任务- TypeError: undefined不是一个函数
- 要查找的函数然后执行任务
- Javascript'使用未声明函数作为对象的能力如何帮助在计算机之间划分任务?
- 在 gulp 任务完成时运行函数的任何方法
- 用于将多个Jquery就绪函数组合为单个就绪函数的Grunt任务
- 简单的todos应用程序教程,试图创建一个函数,从Mongo集合中删除选中的任务
- “套接字”类型错误上缺少错误处理程序:任务不是函数 - 节点.js异步.js
- 为什么我必须在Javascript中执行所有由HTML调用的函数中的任务