基于淘汰中的条件的动态事件处理程序

Dynamic event handler based on a condition in knockout

本文关键字:条件 动态 事件处理 程序 于淘汰 淘汰      更新时间:2023-12-09

我知道你可以有一个不同的模板,它根据一个条件使用不同的事件处理程序,但有没有一种方法可以在淘汰中使事件处理程序名称动态?

例如:

<button data-bind="event : { EventToUse() : SomeMethod }"></button>

有一个这样的方法:

self.EventToUse = function(){
    return 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';
};

上面的绑定语法是无效的,所以它不是一个解决方案,只是我的目标的草图

我再一次知道有这样的东西:

self.TemplateToUse = function(){
    return 'ontouchstart' in document.documentElement ? 'touch-Template' : 'desktop-Template';
};

并将其绑定到加载模板的容器。

我想知道这是否可以用更少的按键来完成。

非常感谢

可以。event绑定接受一个对象,并且该对象可以动态构建。

<button data-bind="event: TouchOrClick(SomeMethod)"></button>

方法:

self.TouchOrClick= function(method) {
    return 'ontouchstart' in document.documentElement ? 
        { 'touchstart' : method } : { 'click' : method };
};