因此请考虑以下事项:
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未定义
问题:为什么没有加载任何内容?我做错了什么吗?
最佳答案
window.ko
正确地未定义,因为您正在使用 RequireJs 加载 Knockout,在这种情况下 Knockout 会检测到这一点,并且不会将自身附加到全局对象。
console.log(ko)
未定义,因为在模块定义函数中您尚未指定 ko
参数。
如果您想访问模块中的依赖项,您需要以正确的顺序为每个依赖项定义一个参数。
因此,在您的情况下,订单是通过您的 _librariesToLoad
声明的,因此 ko
应该是第四个:
require(_librariesToLoad, function(jqueryUri, jqueryCookies, lodash, ko){
console.log(ko);
});
演示 JSFiddle .
关于javascript - knockout 没有定义? require js 加载了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524267/