要求使用AMD模式为jQuery UI事件提供错误

Rah*_*put 8 javascript jquery-ui amd requirejs jasmine

在我的代码中,test.js依赖于jquery-ui,它不使用需要AMD模式和test.spec.js依赖于jquery-ui,test.js使用AMD模式.我们可以在运行test.spec.js时动态加载jquery-ui在test.js中的依赖关系.

require.config({

    baseUrl: '/demo',

    paths: {
        'jquery': '../library/jquery-1.11.1',
        'jquery-ui': '../library/jquery-ui-1.11.4'
    },
    shim: {
        'jquery': {
            exports: 'jQuery'
        },
        'jquery-ui': {
            deps: ['jquery']
        },
        'library/src/js/test': {
            deps: ['library/jquery-1.11.1', 'library/jquery-ui-1.11.4', '../js/collapse'],
            exports: 'Test'
        }
    },
    callback: window.__karma__.start
});
Run Code Online (Sandbox Code Playgroud)

在test.js中写入了jquery-ui draggable事件的"draggable".在评估$('#panelId').draggable({revert: true}); 得到错误后

"TypeError:'undefined'不是函数(评估'$('#panelId').draggable({revert:true})')"

如何在require.config中为test.js加载jquery-ui.因为我用它来运行我的茉莉花测试用例.在真实环境中,它按预期工作,但在jasmine测试用例中无法找到jquery-ui事件.test.js不使用require.js,但test.spec.js使用require AMD模式.

在test.spec.js代码执行后得到jquery-ui draggable undefined的错误

define(['jquery-ui','library/src/js/test'], function ($) {

});
Run Code Online (Sandbox Code Playgroud)

我能够使用$访问test.spec.js中的jquery ui,而不是在test.js中,其中jquery-ui事件被写为test.js不使用AMD require模式.不知道遗失了什么.任何帮助将被appriciated ... :)

Kus*_*hal 3

尝试这个更新的 require js 配置

使用“library/src/js/test”加载您的测试

require.config({

    baseUrl: '/demo',

    paths: {

        'jquery': '../library/jquery-1.11.1', // assuming this is a correct path
        'jquery-ui': '../library/jquery-ui-1.11.4'  // assuming this is a correct path
    },
    shim: {
        'jquery': {
            exports: 'jQuery'
        },
        'jquery-ui': {
            deps: ['jquery']
        },
        'library/src/js/test': {
            deps: ['jquery', 'jquery-ui', '../js/collapse'], // changes done here
            exports: 'Test'
        }
    },
    callback: window.__karma__.start
});
Run Code Online (Sandbox Code Playgroud)