【问题标题】:Custom binding not getting called in knockout在淘汰赛中未调用自定义绑定
【发布时间】:2015-08-10 15:07:54
【问题描述】:

我正在学习一些教程并尝试学习knockout.js。 我无法调用自定义绑定。

我的自定义绑定 JS 代码:

/// <reference path="knockout-3.3.0.debug.js" />
/// <reference path="jquery-1.10.2.min.js" />
/// <reference path="jquery-ui-1.11.4.min.js" />

ko.bindingHandlers.executeOnEnter = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var allBindings = allBindingsAccessor();
        $(element).keypress(function (data, event) {
            var keyCode = (event.which ? event.which : event.keyCode);
            if (keyCode === 13) {
                allBindings.executeOnEnter.call(viewModel);
                return false;
            }
            return true;
        });
    }
};

我使用以下代码绑定它:

 <input type="text" data-bind="executeOnEnter: addData" />

但是,什么也没有发生。即使在自定义绑定函数上设置了alert,实际上也没有任何反应,这绝对意味着它没有被调用。

【问题讨论】:

  • 这就是你的全部代码吗?你打电话给:ko.applyBindings?使用“addData”方法的视图模型在哪里?

标签: javascript knockout.js


【解决方案1】:

这是一个工作版本,

ko.bindingHandlers.executeOnEnter = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var allBindings = allBindingsAccessor();
        $(element).keypress(function (event) {
            if (event.keyCode === 13) {
                allBindings.executeOnEnter.call(viewModel);
                return false;
            }
            return true;
        });
    }
};

我删除了以下行以使其适合您。

var keyCode = (event.which ? event.which : event.keyCode);

然后将keyCode替换为event.keyCode

谢谢

self.CallAlert = function () {
    alert('Alert called!');
};

<input type="text" data-bind="executeOnEnter: CallAlert" class="form-control"/>

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多