我正在使用RequireJS和Knockout JS编写应用程序。该应用程序包括一个针对挖出的扩展,它将ko.protectedObservable
添加到主要淘汰对象。我希望这总是在require'd淘汰对象上可用,而不仅仅是当我在依赖项中指定它时。我可以将这些文件连在一起,但这似乎是不必要的。
此外,我可以将knockout-protectedObservable
作为knockout
在requirejs shim配置中的依赖项,但这只会导致循环依赖,并且都无法加载。
编辑: 我已经解决了我的问题,但看起来很黑,有更好的方法吗?
- Main.html
<script type="text/javascript" src="require.js"></script>
<script type="text/javascript">
require(['knockout'], function(ko) {
require(['knockout-protectedObservable']);
});
</script>
- knockout-protectedObservable.js
define(['knockout'], function(ko) {
ko.protectedObservable = { ... };
});
答案 0 :(得分:2)
是的,更简单的方法是将您的knockout
ID点设置为更新的ko
:
require.config = {
// Your other settings
"paths": {
"knockout": "wrappers/enhanced-knockout",
"vendor/knockout": "third-party/knockout.3-2.min"
}
}
然后,您的enhanced-knockout
脚本会将所需内容添加到vendor/knockout
:
define(['vendor/knockout'], function(ko) {
ko.protectedObservable = { ... };
return ko;
});