基于敲除条件的动态事件处理程序

时间:2013-11-28 17:00:26

标签: javascript knockout.js

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

例如:

<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';
};

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

我发现是否可以使用较少的击键来完成。

非常感谢

1 个答案:

答案 0 :(得分:0)

是的,你可以。 event绑定接受一个对象,该对象可以动态构造。

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

方法:

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