2012-05-04 2 views
6

Я использую нокаут в качестве основной структуры в своем приложении, и он должен поддерживать планшеты и мобильные устройства. Поскольку структура построена на обработчиках привязки, мне интересно, как добиться пользовательской привязки к действиям (например, салфетки и другие устройства), или, возможно, что-то вроде этого сделано?Переплетение действия в knockoutjs

+0

Вы можете добавить свои собственные привязок: http://knockoutjs.com/ documentation/custom-bindings.html – Niko

+0

Да, я знаю. но то, что я ищу, - это некоторые хорошие встроенные в салфетки, краны и другие привязки событий касания (потому что теперь я инициализирую его при запуске документа с помощью селекторов jquery и привязываю эти действия вручную) –

ответ

6

Возможно слишком поздно, но здесь это библиотека, которая добавляет прикосновение привязки к knockoutjs: https://github.com/yaroslavya/knockouch

+0

+1 спасибо, отличная библиотека. этот ответ должен быть принят – amin

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>​ 

где йоЗотеЬЫпд является функцией.

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'" 
    
Смежные вопросы