7

アプリケーションのメインフレームワークとしてノックアウトを使用しており、タブレットとモバイルデバイスをサポートする必要があります。フレームワークはバインディングハンドラーに基づいて構築されているので、アクション(スワイプやその他のデバイス固有のアクションなど)へのカスタムバインディングをどのように実現できるのでしょうか。

4

4 に答える 4

7

おそらく手遅れですが、knockoutjsにタッチバインディングを追加するライブラリがあります: https ://github.com/yaroslavya/knockouch

于 2013-04-07T10:17:39.540 に答える
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'"
    
于 2013-05-07T19:02:00.687 に答える
0

knockout.jsには他のフレームワークへの依存関係がないため、特定のフレームワーク用の組み込みバインディングはありません。@nikoが上記で提供するリンクを参照するバインディングハンドラーにjQueryセレクターコードを変換するのは簡単な作業です。

于 2012-06-26T14:02:40.720 に答える
0

それでも役立つかどうかはわかりませんが、ここにポインタがあります。

  1. マルチタッチアクションを取得するには、Hammer.jsなどのライブラリを使用します。
  2. カスタムバインディングハンドラーを作成し、ノックアウトのデフォルトのイベントバインディングを呼び出します。スワイプの場合はこのようなものです。(フィドルの作者はtap.jsを使用しています)

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

これで、HTMLで行うのは

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

ここで、doSomethingは関数です。

于 2012-11-19T13:44:59.910 に答える