击倒没有定义?确实需要js加载任何内容

Knockout is not defined? Did require js load anything?

本文关键字:js 加载 任何内 定义      更新时间:2024-03-26

因此考虑以下内容:

addExternalLibrary: function(name, url) {
    _externalLibraries[name] = url;
    _librariesToLoad.push(name);
},
setUpRequireJS: function() {
  define('jquery', [], function() {
    return jQuery;
  });
  requirejs.config({
    paths: _externalLibraries,
    waitSeconds: 5
  });
},
load: function(options) {
  this.addExternalLibrary('jqueryUri', 'https://code.jquery.com/ui/1.11.4/jquery-ui.min');
  this.addExternalLibrary('jqueryCookies', 'https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min');
  this.addExternalLibrary('lodash', 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.8.2/lodash');
  this.addExternalLibrary('knockout', 'https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min');
  this.addExternalLibrary('knockoutValidation', 'https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.3/knockout.validation.min');
  this.setUpRequireJS();
  require(_librariesToLoad, function(){
    console.log(ko);
  });
},

注意到console.log(ko)??很明显,ko没有定义,甚至window.ko控制台中没有错误,关于requirejs接受:Uncaught ReferenceError: ko is not defined

所以问题:为什么什么都没有加载?我做错什么了吗?

window.ko未正确定义,因为您正在使用RequireJs加载Knockout,在这种情况下,Knockout检测到这一点,并且不会将自己附加到全局对象。

console.log(ko)未定义,因为在模块定义函数中没有指定ko参数。

如果你想访问模块中的依赖项,你需要为每个依赖项定义一个正确顺序的参数。

所以在你的情况下,订单是用你的_librariesToLoad声明的,所以ko应该是第四个:

require(_librariesToLoad, function(jqueryUri, jqueryCookies, lodash, ko){
    console.log(ko);
});

演示JSFiddle。