我不能为我的生活弄清楚为什么ko.mapping是未定义的。
我正在使用以下JS库:
我尝试过以下操作(每次更改后都会进行硬刷新):
有趣的是,我能够实现这一目标的唯一两种方法是
如果我将敲除映射复制粘贴到淘汰库文件中(但是具有不同名称但完全相同内容的新文件没有)。
OR
我实际上最终做的是以下内容:
$(document).ready(function () {
.
.
.
var loadKnockoutMapping = function () {
var s = document.createElement('script');
s.src = '/cstm/JavaScript/knockout.mapping-2.4.1.js';
document.body.appendChild(s);
var callbackTimer = setInterval(function () {
var mappingIsDefined = false;
try {
mappingIsDefined = (ko.mapping !== undefined);
} catch (e) { }
if (mappingIsDefined) {
clearInterval(callbackTimer);
setupRequestableAssignmentData(); //uses ko.mapping.fromJS function
}
}, 100);
}
loadKnockoutMapping();
}
有谁知道这里发生了什么?我甚至尝试过不向页面添加一个新的脚本元素,只是一个超时函数,等到ko.mapping没有未定义但是没有用,ko.mapping从未被定义为任何东西。
答案 0 :(得分:0)
我认为你是"重新发明"这里的轮子。这里有一个很棒的图书馆。 http://requirejs.org/
这将为您处理脚本加载。
requirejs.config({
paths: {
jquery: 'libs/jquery.js',
knockout: 'libs/knockout.js',
knockoutMapping: 'libs/knockoutMapping.js'
}
shim: {
'knockout': {
deps: ['jquery'],
}
}
});
require(["jquery","knockout","knockoutMapping",function($,ko,mapping){
console.log($,ko,mapping);
});