在运行时加载knockout.jslib
load knockout.js lib at runtime
我想在运行时加载knockout.js库。它被加载,但在applyBindings()之后,html主体标记(即<body></body>
)失效并抛出
未捕获的类型错误:无法读取null 的属性"nodeType"
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js");
document.getElementsByTagName("head")[0].appendChild(script);
ko.applyBindings(viewModel);
我只是不明白,为什么身体元素会被清空
附言:如果我事先添加了knockout.js库,它会非常好用
首先,在没有确保脚本已加载的情况下使用ko
。您需要使用onload
属性传递回调:
script.onload = function() {
ko.applyBindings(viewModel);
}
此外,Knockout会抱怨,因为您在DOM准备好之前就调用了applyBindings
。尝试将代码作为DOMContentLoaded
事件回调的一部分运行:
document.addEventListener("DOMContentLoaded", function() {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js");
document.getElementsByTagName("head")[0].appendChild(script);
script.onload = function() {
ko.applyBindings(viewModel);
}
});
请参阅Fiddle
相关文章:
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 显示模块模式在Knockout中设置模型的新实例
- Knockout.JS标签在foreach内部不起作用
- 如何收集Knockout可观察性以放入JSON
- 使用Knockout JS从下拉框中向observalearray添加项
- 将JSON数据从服务器加载到knockout.jsobservable中
- Knockout绑定大量数据的速度较慢
- 使用knockout.js将数组绑定到视图模型
- Knockout observable没有观察到其中一个属性
- 如何使用Jasmine测试Knockout.js点击绑定
- 类似于Prism的Knockout js框架
- Knockout JS和简单的函数
- Knockout映射创建/更新出现问题
- 使用带HTML按钮的Knockout
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- Knockout.js中带有if:子句的嵌套循环
- Knockout JS中具有下拉列表的数组
- 在Knockout中绑定数据后获取数据
- 在运行时加载knockout.jslib