2014-03-13 50 views
5

我使用的一个网站上淘汰赛require.js和想使用此链接http://knockoutjs.com/examples/grid.html的simpleGrid例子不过,我可以不包括与kncokout.simpleGrid.3.0.js使用knockout.simpleGrid.3.0.js要求。与Require.js

我已经试过包装插件与

define(['jQuery', 'knockout'], // Require knockout 
    function($, ko) { 

    }); 

这不起作用,看来问题出现与模板。

任何帮助表示赞赏

回答

0

在您需要的配置,你应该创建一个路径simpleGrid库,并使用垫片来告诉它取决于淘汰赛,使您的库以正确的顺序加载。这里有一个例子:

var require = { 
    paths: { 
     'jquery': 'lib/vendor/jquery-2.0.3', 
     'ko': 'lib/vendor/knockout-3.0.0', 
     'koSimpleGrid': 'lib/vendor/knockout.simpleGrid.3.0' 
    }, 
    shim: { 
     'koSimpleGrid': { 
      deps: ['ko'] 
     }, 
    } 
}; 

然后你可以复制从例如粘贴视图模型代码内部的定义是这样的:

define(['jquery', 'ko', 'koSimpleGrid'], function ($, ko) { 
    // VIEW MODEL GOES HERE 
}); 
0

我同意这个问题似乎是与编写代码网格模板。本质上,,因为requirejs异步加载模块,document.write()不能使用 - 在模块执行时写入文档已完成This StackOverflow answer explains it well我想。

我绕着它通过代替创建和附加使用DOM方法所需的脚本标签模板:

templateEngine.addTemplate = function(templateName, templateMarkup) { 
    var scriptTag = document.createElement('script'); 
    scriptTag.type = 'text/html'; 
    scriptTag.id = templateName; 
    scriptTag.text = templateMarkup; 
    document.getElementsByTagName('body')[0].appendChild(scriptTag); 
}; 

My amd version is in this gist