我想結合Hammer.js和knockout.js,但它似乎有些不起作用。與hammer.js敲除綁定
我用這個功能:
var events = ['tap', 'doubletap', 'hold', 'rotate',
'drag', 'dragstart', 'dragend', 'dragleft', 'dragright', 'dragup',
'dragdown', 'transform', 'transformstart',
'transformend', 'swipe', 'swipeleft', 'swiperight',
'swipeup', 'swipedown', 'pinch', 'pinchin', 'pinchout'];
ko.utils.arrayForEach(events, function (eventName) {
ko.bindingHandlers[eventName] = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var origParams = ko.utils.unwrapObservable(valueAccessor()),
params = typeof(origParams) == 'function' ? {handler: origParams} : origParams,
hammerObj = hammer(element, params.options),
args = params.delegate ? [eventName, params.delegate, params.handler] : [eventName, params.handler]
hammerObj.on.apply(hammerObj, args);
}
}
});
比如我想這應該是我在頁面上的每個圖像拖動事件等我的HTML我認爲巡航能力:
<div class="row-fluid" data-bind="foreach: {data: picturesArray}">
<ul class="thumbnails" >
<li class="img-item" data-bind="
doubletap: img.doubletap.bind(img),
drag: img.drag.bind(img)">
<img class="one-img"
style="width: 100px; height: 100px;" data-bind="attr: { src: img.media.m }"/>
</li>
</ul>
</div>
但它不起作用。在我的JS文件中,綁定methond不會調用。
不是傳遞'$ data'和手動'$ parent'的,似乎最好通過第五訪問它們綁定的'bindingContext'參數:'update:function(element,valueAccessor,allBindings,viewModel,bindingContext)' – janfoeh