我遇到了一些奇怪的问题。我有这个
require({
paths: {
'template': 'tmpl.min',
'videoupload.widget': 'jquery.ui.videoupload'
}
}, ['js/main_video.js'], function(App) {
App.initial_video_upload();
});
和这个
define(['template','videoupload.widget'],function() {
function initial_video_upload(){
'use strict';
$('#videoupload').videoupload({
//...some code
});
}
return{
initial_video_upload: initial_video_upload
}
}
);
在文件jquery.ui.videoupload.js
中,我有一个tmpl
方法的调用,该方法在tmpl.min.js
中定义,但我收到了消息
Uncaught TypeError: Object [object Object] has no method 'tmpl'
答案 0 :(得分:0)
这里有两个问题:
您的第一个代码段是将配置选项传递给require
函数。 require
,是一种加载依赖项并使用它们执行某些代码的方法。如果要将配置选项传递给require.js,requirejs.config
就是您想要的:
// configurations to be used in your module definitions
requirejs.config({
paths: {
'template': 'tmpl.min',
'videoupload.widget': 'jquery.ui.videoupload'
}
});
// load your main module and kick things off
require(['js/main_video.js'], function(App) {
App.initial_video_upload();
});)
您的第二个代码段是声明依赖项,但未将它们传递给回调函数:
define(['template','videoupload.widget'],
// these are now accessible within the function's scope:
function(template, videoupload.widget) {
function initial_video_upload(){
'use strict';
$('#videoupload').videoupload({
//...some code
});
}
return{
initial_video_upload: initial_video_upload
}
}
);
此外,我假设jQuery是你的videoupload.widget的依赖项。你是怎么加载的?您可能需要在requirejs.config中添加额外的“shim”配置:
requirejs.config({
paths: {
'template': 'tmpl.min',
'videoupload.widget': 'jquery.ui.videoupload'
},
shim: {
"videoupload.widdget": ["jquery"]
}
});