3

我想使用 RequireJS 来管理我网站中的插件。我使用带有映射插件的淘汰赛,我正在阅读以下答案https://stackoverflow.com/a/16449509/1070291并且我在让它运行时遇到了一些麻烦。

回调似乎在实际的 require() 语句之后运行,这意味着ko.mapping未定义

知道我错过了什么吗?

<script>
    var require = {
        paths: {
            "knockout": "//cdnjs.cloudflare.com/ajax/libs/knockout/2.2.1/knockout-min",
            "mapping": "//cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.5/knockout.mapping"
        },
        deps: ['knockout', 'mapping'],
        callback: function (ko, mapping) {
            ko.mapping = mapping;
        }
    };
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.min.js"></script>
<script>
    require(['knockout'], function (ko) {
        alert( 'ko: ' + ko + ', mapping: ' + ko.mapping);
    });
</script>

JsFiddle在这里:http: //jsfiddle.net/WLegU/2/

4

1 回答 1

2

你几乎可以让它工作了。唯一缺少的部分是您甚至需要mapping模块,而模块又首先调用回调,因为它是一个依赖项。

require(['knockout', 'mapping'], function (ko) {
    console.log( 'ko: ' + ko + ', mapping: ' + ko.mapping );
});

检查小提琴

从文档

当 deps 中列出的所有依赖项都加载完毕时,将调用此回调函数。

因为您不需要该mapping模块,所以稍后在加载映射模块时调用回调。

于 2013-08-04T10:33:54.270 回答