始终需要加载插件

时间:2014-08-20 15:33:35

标签: javascript knockout.js requirejs

我正在使用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 = { ... };
});

1 个答案:

答案 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;
});