Fastclick.js与AngularJS集成

jed*_*ung 12 javascript touch angularjs cordova

我正在构建Cordova应用程序,并且单击响应时间很慢.

找到了Angular 的angular-touch插件(虽然为Angular 1.2.0设计,看起来它可能适用于Angular的旧版本,因为它实际上只是一组指令)但是在试用它之后,我没有'得到我想要的结果.点击仍然没有点击.

根据我的理解,fastclick.js是目前角度触摸更稳定的替代品(因为角度触摸仍在开发中).但是,我希望我的ng-click指令能够利用fastclick.

如何将fastclick.js与angular集成 - 我可以只包含文件并初始化脚本,还是必须包含fastclick行为ng-click(基本上是angular-touch对其第一方代码的作用)?

注意:我的应用程序使用的是Angular 1.0,因为它是在稳定版本之前构建的.

Bla*_*ger 13

这个页面:"Angular方式"是.runAngular JS文件中的FastClick初始化程序.确保fastclick.js在Angular代码之前加载模块.

HTML:

<script src="js/fastclick.js"></script>
<script src="js/app.js"></script>
<script src="js/filters.js"></script>
<script src="js/controller.js"></script>
Run Code Online (Sandbox Code Playgroud)

在app.js中:

app.run(function() {
    FastClick.attach(document.body);
});
Run Code Online (Sandbox Code Playgroud)

  • 如果你将FastClick作为常量注入并使用`$ document`服务,它会更加Angular友好:) (4认同)
  • @Blazemonger在可测试性方面,是的,因为FastClick是一个全局变量,所以你可以正确地模拟它,而不是在测试时做恶劣的黑客攻击.资料来源:https://github.com/johnpapa/angularjs-styleguide#style-y240 (4认同)

jed*_*ung 8

这比我想象的要简单; 我预计必须修改一些角度指令,但事实证明这只是一个插件库.我将它包含在我的角度库之前,并在我的phonegap应用程序中看到了即时结果(在new FastClick使用fastclick文档调用之后).

到目前为止,我找不到这种方法的任何缺点.我认为document.ready-type设置调用可能存在一些问题(而不是更多集成到Angular中的内容),但似乎没有任何时序问题或任何问题.

值得注意的是任何偶然发现这个问题的人 - 我只使用了水龙头功能; 我相信fastclick暴露了一些我没有用于这个项目的额外功能.