2013-11-28 37 views
0

我知道你可以有一个不同的模板,它使用基于条件的不同事件处理程序,但有没有办法在淘汰赛中使事件处理程序名称变为动态?基于条件挖掘的动态事件处理程序

例如:

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

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

我在找出这是否可以使用较少的击键来完成。

很多谢谢

回答

0

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

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

的方法:

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