0

我遇到了一些奇怪的问题。我有这个

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'
4

1 回答 1

0

这里有两个问题:

  1. 您的第一个片段是将配置选项传递给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();
    });)
    
  2. 您的第二个片段是声明依赖项,但没有将它们传递给回调:

    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"]
    }
});
于 2013-09-16T15:53:58.233 回答