首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery纺纱机和Knockout

jQuery纺纱机和Knockout
EN

Stack Overflow用户
提问于 2013-09-04 14:00:45
回答 1查看 1.4K关注 0票数 2

我如何将jQuery UI旋转小部件与Knockout结合起来?此回答不再工作,因为没有spinchange事件。这是我的HTML:

代码语言:javascript
运行
复制
<input id='spinner' data-bind='value:theValue' />
<span data-bind='text:theValue'></span>

我的JS:

代码语言:javascript
运行
复制
$(function() {
    $('#spinner').spinner();

    var viewModel = {
        theValue: ko.observable(3)
    };

    ko.applyBindings(viewModel);
});

你可以在jsFiddle中玩这个游戏。如您所见,使用旋转按钮不会改变span中的文本。用键盘输入一个数字,然后将焦点放在页面的其他地方将改变文本(因此绑定工作)。

因为我使用的是ASP.NET,并且将这个旋转小部件封装在一个WebControl中,所以它可能与此有关。我不能采取与前面提到的答案相同的方法,因为我们并不是在每一页上都使用Knockout。

但是,如果我甚至可以让jsFiddle工作,这可能会帮助我进一步,甚至只是解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 14:34:40

没必要再看下去了。很显然,答案差不多是对的。问题在于我认为ko.utils.registerEventHandler的问题。当我将代码更改为:

代码语言:javascript
运行
复制
ko.bindingHandlers.spinnerValue = {
    init: function (element, valueAccessor) {
        //handle the field changing
        $(element).on('spinstop', function () {
            var observable = valueAccessor();
            observable($(element).spinner("value"));
        });
    },

    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());

        current = $(element).spinner("value");
        if (value !== current) {
            $(element).spinner("value", value);
        }
    }
};

所以我使用jQuery和on函数。spinstop事件确实存在(与spinchange一样)。我一直在查找代码,只是在搜索字符串。我想jQuery代码做的有点不同。

无论如何,这个自定义处理程序可以工作,即使我们的ASP.NET WebControl也是如此。对于较早版本的spinner (我们以前使用的是1.20 ),正常的KO绑定可以工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18615944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档