JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了knockout.js – Knockout自定义resizable绑定到2个observables更新两次大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图创建一个淘汰绑定到 jquery ui可调整大小的小部件.我的自定义绑定绑定到视图模型上的2个不同的可观察对象,即“left”和“width”.
<div class="layer" data-bind="resizable: {left: left,width: width}">
<div class="left ui-resizable-handle ui-resizable-w"><<<</div>
<div class="right ui-resizable-handle ui-resizable-e">>>></div>
</div>

ko.bindingHandlers.resizable = {
    init: function(element,valueAccessor,allBindingsAccessor,viewModel) {
        var values = valueAccessor();
        $(element).resizable({
            handles: null,resize: function(event,ui) {
                values.left(ui.position.left);
                values.width(ui.size.width);
            }
        });
    },update: function(element,viewModel) {
        var values = valueAccessor();
        $(element)
            .css('left',values.left() + 'px')
            .css('width',values.width() + 'px')
            ;
    }
};

var vm = {
    left: ko.observable(50),width: ko.observable(300)
    };

ko.applyBindings(vm);

问题是,当我使用左句柄调整div时,2个observable会更新,从而在同一个绑定中触发2次更新.我需要它才能触发一次更新.

我对这种绑定有什么选择?创建绑定到多个observable的绑定的推荐方法是什么?

我的真实世界代码更复杂,但我认为iv将我的问题归结为这个小提琴:

http://jsfiddle.net/MatteS75/3dwVp/10/

解决方法

你有没有尝试过使用Michael Best的Knockout Deferred Updates Plugin

这是一个更新的小提琴:http://jsfiddle.net/jearles/3dwVp/11/

您需要做的就是在淘汰赛后包含他的.js文件.

<script type="text/javascript" src="knockout-2.1.0.js"></script>
<script type="text/javascript" src="knockout-deferred-updates.js"></script>

大佬总结

以上是大佬教程为你收集整理的knockout.js – Knockout自定义resizable绑定到2个observables更新两次全部内容,希望文章能够帮你解决knockout.js – Knockout自定义resizable绑定到2个observables更新两次所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。