4

我将 requirejs 与 fastclick 一起使用。我收到以下错误:

Uncaught TypeError: Cannot set property 'trackingClick' of undefined 

在 Fastclick.js 第 30 行中:this.trackingClick = false;

在 config.js 我运行 app.js:

require.config({
    paths: {
       fastclick:'fastclick'
    }    
)};
require(['app'], function (App) {
    App.initialize();
});

在我的app.js我做:

define(['fastclick'], function(fastclick){
    var app = { 
        initialize: function () {
            var attachFastClick = require('fastclick');
            attachFastClick(document.body);
        }
    }
    return app;
}    

浏览器启动正常,并且在调试器中,fastclick 库已正确实例化和解析,但this在 Fastclick.js 中仍无法解析。

我也试过fastclick(document.body);,但似乎没有任何效果。

有任何想法吗?

4

3 回答 3

7

查看 Fastclick 代码,我发现以下功能有效: Fastclick.attach

所以,而不是调用:

 var attachFastClick = require('fastclick');
        attachFastClick(document.body);

以下作品:

 fastclick.attach(document.body);
于 2013-07-31T20:52:14.767 回答
2

在我的应用程序中,我只需使用下面的代码即可使用 fastclick 正确初始化我的应用程序。我删除了所有其他不相关的代码行,以使我的解决方案更清晰

define([
    'fastclick',
], function(FastClick){
    var initialize = function(){
        new FastClick(document.body);
    }
    return {
        initialize: initialize
    };
});
于 2013-08-06T16:35:24.177 回答
1

是的,就像 dsheene 说的那样,FastClick 库只会返回FastClick.attachBrowserify 或其他 CommonJS 样式。对于 AMD 样式,FastClick 将返回完整的FastClick对象。

来自 FastClick 源:

if (typeof define !== 'undefined' && define.amd) {
  // AMD. Register as an anonymous module.
  define(function() {
    'use strict';
    return FastClick;
  });
}

在你想要的 app.js 文件中。

define(['fastclick'], function(fastclick){
  var app = { 
    initialize: function () {
      var FastClick = require('fastclick');
      FastClick.attach(document.body);
    }
  }
  return app;
}
于 2014-02-27T23:32:35.417 回答