使用requireJS进行Knockout Mapping

时间:2013-08-04 09:58:18

标签: javascript requirejs knockout-mapping-plugin

我想使用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/

1 个答案:

答案 0 :(得分:2)

你几乎接近让它运转起来。唯一缺少的部分是你需要甚至需要mapping模块,而模块又首先调用回调,因为它是一个依赖项。

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

Check Fiddle

来自文档

  

当所有依赖项都将调用此回调函数                   上面列出的deps中已加载。

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