javascript - Knockout 共享绑定(bind)处理程序

标签 javascript jquery knockout.js knockout-2.0

我目前正在 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/

相关文章:

javascript - 如何从 ko.compulated 中删除数组项

javascript - React-Rails - 入门问题

jquery - 带有 jquery-ui-map 的 Adsense

javascript - 通过 require.js 加载所有内容时,如何将 Knockout View 模型的一部分传递给组件?

jquery - 如何以编程方式隐藏 Highcharts 中的工具提示?

jquery - 加载 jquery 两次会导致错误?

php - Knockout JS 和 Chosen 多选不工作

javascript - XMLParser 给出错误 '' 无法设置未定义的属性值''

javascript - Node js - Push() 函数无法与引用和 mongodb 一起正常工作

javascript - jquery 第一次尝试时无法访问 iframe