Requirejs 如果我定义sDashboard.js,那么总是未定义
我正在为我的应用程序使用sDashboard,当我尝试使用requirejs创建模块时,我总是得到未定义的 此sDashboard可在github上获得 我的配置文件Requirejs 如果我定义sDashboard.js,那么总是未定义,requirejs,Requirejs,我正在为我的应用程序使用sDashboard,当我尝试使用requirejs创建模块时,我总是得到未定义的 此sDashboard可在github上获得 我的配置文件 requirejs.config({ baseUrl: 'http://localhost:8090/module-require_dashboard/js/', paths: { jquery:'lib/jquery.min', mockjax:'lib/jquery.mockj
requirejs.config({
baseUrl: 'http://localhost:8090/module-require_dashboard/js/',
paths: {
jquery:'lib/jquery.min',
mockjax:'lib/jquery.mockjax',
jqueryui: 'lib/jquery-ui.min',
Flotr:'lib/flotr2/flotr2',
sDashboard:'lib/jquery-sDashboard'
},
shim: { //add the dependencies that should be loaded synchronously
'jqueryui': ['jquery'],
'timepicker': ['jqueryui'],
'mockjax': ['jquery']
}
});
sDashBoard小部件js
sDashboard的js文件的一部分,供您参考
( function(factory) {"use strict";
if ( typeof define === 'function' && define.amd) {
// Register as an AMD module if available...
define(['jquery', 'Flotr'], factory);
} else {
// Browser globals for the unenlightened...
factory($, Flotr);
}
}(function($, Flotr) {"use strict";
$.widget("mn.sDashboard", {
version : "2.5",
options : {
dashboardData : [],
widgetWidth :400
},
当我在Dashboard.js文件中使用define来使用sDashboard时,我总是得到sDashboard的未定义值
define(['jquery','jqueryui','sDashboard'], function(JQuery,jqueryui,sDashboard){
console.log(sDashboard);
});
我不知道我犯了什么错误,请给出你的建议。sDashboard是一个jQuery插件。加载jQuery插件时,它将自己安装在jQuery
对象上。在RequireJS中加载jQuery插件的事实对此没有任何改变。因此,通常这样的插件在AMD环境(如RequireJS)中加载时不会从其工厂功能返回任何内容。因此,如果您尝试检查模块,您会发现未定义。这是完全正常的,并不表示它没有正确加载。您必须测试jQuery
对象上是否存在插件
您要做的是这样的:
define(['jquery', 'jqueryui', 'sDashboard'], function(jQuery, jqueryui) {
console.log(jQuery.sDashboard);
});
您不需要在回调中有一个对应于“sDashboard”
的参数,因为这将是无用的。(当然,如果在“sDashboard”
之后有其他依赖项,则必须在参数列表中为其设置一个占位符,否则其他参数在其应位于的位置之后会得到错误的值。)感谢您的回复。我试着照你说的做,但还是遇到了同样的问题。我在JSFIDLE中有一个工作代码。jsfiddle-。请你检查一下,是否可以。你的错误与RequireJS无关。您调用了requirejs
,而不是require
。您也没有对应于#test
的元素。看到拯救sry出了什么问题。这是链接。$。sDashboard仍然显示未定义。您没有使用我在答案中显示的代码。您必须请求“sDashboard”
模块以便加载。您不必在回调的参数中为其设置相应的参数。(在加载资源的过程中也存在一些问题:您要求jsiddle加载内容,然后要求RequireJS再次加载它们。)