gpt4 book ai didi

touch - 如何将hammer.js 与 Angular.js 结合使用

转载 作者:行者123 更新时间:2023-12-02 18:57:52 25 4
gpt4 key购买 nike

我是新用户 Angular.js阅读时我知道 Angular 没有点击、双击等事件。我正在尝试与 Hammer.js 结合使用没有成功。

代码来自gist

/**
* angular-hammer.js
* Inspired by AngularJS' implementation of "click dblclick mousedown..."
*
* This ties in the Hammer events to attributes like:
*
* hm-tap="add_something()"
* hm-swipe="remove_something()"
*
* and also has support for Hammer options with:
*
* hm-tap-opts="{hold: false}"
*
* or any other of the "hm-event" listed underneath.
*/
angular.forEach('hmTap:tap hmDoubletap:doubletap hmHold:hold hmTransformstart:transformstart hmTransform:transform hmTransforend:transformend hmDragstart:dragstart hmDrag:drag hmDragend:dragend hmSwipe:swipe hmRelease:release'.split(' '), function(name) {
var directive = name.split(':');
var directiveName = directive[0];
var eventName = directive[1];
angular.module('MYMODULE').directive(directiveName,
['$parse', function($parse) {
return function(scope, element, attr) {
var fn = $parse(attr[directiveName]);
var opts = $parse(attr[directiveName + 'Opts'])(scope, {});
element.hammer(opts).bind(eventName, function(event) {
scope.$apply(function() {
console.log("Doing stuff", event);
fn(scope, {$event: event});
});
});
};
}]);
});

现在我已经添加到我的 html 文件

<!--...-->
<script src="/js/jquery-1.9.0.js"></script>
<script src="/js/angular.js"></script>

<script src="/js/hammer.js"></script>
<script src="/js/jquery.hammer.js"></script>
<script src="/js/angular-hammer.js"></script>

<script src="/js/app/controllers.js"></script>
</html>

但是当我尝试在我的 html 中使用时它不起作用。

我尝试过

<li hmTap="click($event)">...</li>
<li ngTap="click($event)">...</li>
<li hm-tap="click($event)">...</li>
<li ng-tap="click($event)">...</li>

没有人可以帮我解决这个问题吗?

最佳答案

尝试一下。

将hammer.js 和 jquery.hammer.js 添加到您的解决方案中。使用 JQuery 和 Angular。

类似这样的事情:

<script src="js/jquery/jquery.min.js"></script>
<script src="js/hammer/hammer.js"></script>
<script src="js/hammer/jquery.hammer.js"></script>
<script src="js/angular/angular.min.js"></script>

Then use Angular directives to define new HTML attributes.

在此示例中,我将创建一个名为 on-tap

的新属性
angular.module('myApp.directives', [])
.directive('onTap', function () {
return function (scope, element, attrs) {
return $(element).hammer({
prevent_default: false,
drag_vertical: false
})
.bind("tap", function (ev) {
return scope.$apply(attrs['onTap']);
});
};
});

然后您可以为每个 Hammer 事件创建一个指令:

按住、点击、双击、transformstart、transform、transformend、dragstart、拖动、dragend、释放、滑动。

您的 HTML 将如下所示:

<button on-tap="DoAngularMethod()">Tap me</button>

关于touch - 如何将hammer.js 与 Angular.js 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com