我目前正在 Knockout 中构建一个数字繁重的应用程序。在我的应用程序中,有三种类型的数字:百分比、小数和大数字,我为每种类型都有自定义绑定(bind)处理程序。
对于输入,我还创建了一个数字验证绑定(bind)处理程序,它读取每个按键以确保输入的是一个数字。 (在应用程序中有华丽的边框 CSS 动画和其他东西 - 这只是一个简单的例子)。
现在要让输入执行验证检查和数字格式设置,我必须绑定(bind)变量两次,您将在下面的 fiddle 中正确看到。
<input data-bind="number: testdata, percentage: testdata">
我认为这不必要地膨胀了我的 HTML 标记,必须有一种更简洁的方法来同时触发两个处理程序。
我的问题:是否可以将数字验证脚本创建为一个函数,然后可以将其共享/包含在数字格式化处理程序中;不会让我的 Javascript 膨胀?
我还是 Knockout 的新手,所以我仍然不确定它的界限。
参见 fiddle :http://jsfiddle.net/axV6S/1/
最佳答案
是的,您可以将数字 init 提取到它自己的函数中,即更改此:
ko.bindingHandlers.number = {
init: function (element) {
/* ... */
}
};
进入这个:
var numberInit = function(element) {
/* ... */
};
只需像这样从您的其他 init 调用它:
init: function(element, valueAccessor) {
numberInit(element);
/* ... */
}
或者如果您想保留正确的“this”上下文:
init: function(element, valueAccessor) {
numberInit.apply(this,arguments);
/* ... */
}
关于javascript - Knockout 共享绑定(bind)处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267460/