我在fastclick中使用requirejs。 我收到以下错误:
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库,但Fastclick.js中仍然this
无法解析。
我也试过fastclick(document.body);
,但似乎没有任何效果。
有什么想法吗?
答案 0 :(得分:7)
查看Fastclick代码,我发现以下功能有效:
Fastclick.attach
所以,而不是打电话:
var attachFastClick = require('fastclick');
attachFastClick(document.body);
以下作品:
fastclick.attach(document.body);
答案 1 :(得分:2)
在我的应用中,我只是使用下面的代码通过fastclick正确初始化我的应用。我删除了所有其他不相关的代码行,以使我的解决方案更加清晰
define([
'fastclick',
], function(FastClick){
var initialize = function(){
new FastClick(document.body);
}
return {
initialize: initialize
};
});
答案 2 :(得分:1)
是的,就像dsheene所说,FastClick库将返回FastClick.attach
仅用于Browserify或其他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;
}