Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 始终需要加载插件_Javascript_Knockout.js_Requirejs - Fatal编程技术网

Javascript 始终需要加载插件

Javascript 始终需要加载插件,javascript,knockout.js,requirejs,Javascript,Knockout.js,Requirejs,我正在用RequireJS和Knockout JS编写一个应用程序。该应用程序包括对knockout的扩展,该扩展向主knockout对象添加了ko.protectedObservable。我希望它在required'd knockout对象上始终可用,而不仅仅是在依赖项中指定它时。我可以把这些文件放在一起,但这似乎是没有必要的 此外,我可以在requirejs shim配置中将knockout protectedObservable作为knockout的依赖项,但这只会导致循环依赖项,并且无法

我正在用RequireJS和Knockout JS编写一个应用程序。该应用程序包括对knockout的扩展,该扩展向主knockout对象添加了
ko.protectedObservable
。我希望它在required'd knockout对象上始终可用,而不仅仅是在依赖项中指定它时。我可以把这些文件放在一起,但这似乎是没有必要的

此外,我可以在requirejs shim配置中将
knockout protectedObservable
作为
knockout
的依赖项,但这只会导致循环依赖项,并且无法加载

编辑: 我已经解决了我自己的问题,但似乎很棘手,有没有更好的办法

--Main.html

<script type="text/javascript" src="require.js"></script>
<script type="text/javascript">
    require(['knockout'], function(ko) {
        require(['knockout-protectedObservable']);
    });
</script>

是的,更简单的方法是使您的
淘汰
ID指向更新的
ko

require.config = {
  // Your other settings
  "paths": {
    "knockout": "wrappers/enhanced-knockout",
    "vendor/knockout": "third-party/knockout.3-2.min"
  }
}
然后,您的
增强型淘汰
脚本将需要的内容添加到
供应商/淘汰

define(['vendor/knockout'], function(ko) {
    ko.protectedObservable = { ... };
    return ko;
});
define(['vendor/knockout'], function(ko) {
    ko.protectedObservable = { ... };
    return ko;
});