我在网站上使用了带有淘汰赛的require.js,并希望使用此链接中的simpleGrid示例http://knockoutjs.com/examples/grid.html但是我不能将kncokout.simpleGrid.3.0.js包含在Require中。
我尝试用
包装插件define(['jQuery', 'knockout'], // Require knockout
function($, ko) {
});
这似乎不适用于模板出现问题。
任何帮助表示赞赏
答案 0 :(得分:0)
在你的require配置中,你应该创建一个simpleGrid库的路径,并使用shim告诉它它依赖于Knockout,以便你的库以正确的顺序加载。这是一个例子:
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
});
答案 1 :(得分: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);
};