2012-05-04 61 views
6

我在我的應用程序中使用基諾作爲主要框架,它必須支持平板電腦和移動設備。由於該框架是基於綁定處理程序構建的,我不知道如何實現自定義綁定到動作(如滑動和其他設備特定的動作),或者可能有類似這樣的事情?在knockoutjs中滑動操作綁定

+0

你可以添加自己的綁定:http://knockoutjs.com/ documentation/custom-bindings.html – Niko

+0

是的,我知道。但我正在尋找的東西是一些很好的內置在滑動,點擊和其他觸摸事件綁定(因爲現在我正在初始化它在文檔開始與jQuery選擇器並手動綁定這些動作) –

回答

0

由於knockout.js對任何其他框架沒有依賴關係,因此沒有針對特定框架的內置綁定。將jQuery選擇器代碼轉換爲引用@niko上面提供的鏈接處理程序應該是一件簡單的任務。

0

我不知道它是否仍然有幫助,但這裏是一個指針。

  1. 使用類似Hammer.js的庫來獲得多點觸摸操作。
  2. 編寫自定義綁定處理程序並調用淘汰賽的默認事件綁定。像這樣的滑動。 (小提琴的作者使用tap.js)

http://jsfiddle.net/snaptopixel/spByj/

現在你在你的HTML做的是

<button data-bind="tap:doSomething">Click Me</button>​ 

其中DoSomething的是一個函數。

1
  1. 創建bindingHandler。在這裏你去一個真實項目的例子

    ko.bindingHandlers.swipeSections = { 
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
        var elem = $(element); 
        var params = valueAccessor().split('##'); 
    
        elem.unbind('swipe'); 
    
        elem.swipe({ 
         swipeLeft: function (event, direction, distance, duration, fingerCount) { 
          //process 
         }, 
         swipeRight: function (event, direction, distance, duration, fingerCount) { 
          //process 
         } 
        }); 
    } 
    

    };

  2. 使用刷卡庫:https://github.com/mattbryson/TouchSwipe-Jquery-Plugin

    script type="text/javascript" src="scripts/jquery.touchSwipe.js" 
    
  3. 定義項的結合

    div id="myid" class="section" data-bind="swipeSections: 'leftPanel##rightPanel'"