加载和Hamljs时RequireJS问题

时间:2013-10-20 18:25:40

标签: javascript requirejs sammy.js

我正在使用requirejs + jquery + sammy.js + hamljs。 模板引擎haml无法运行:它运行sammy.haml,但是为main.js定义了Haml,但是没有为sammy.haml定义,并且无法在其中运行。requirejs.config({ baseUrl: '../../components/', paths: { dropkick: 'jquery-dropkick2/jquery.dropkick-1.0.0', Ladda: 'Ladda/dist/ladda.min', 'jquery-autosize': 'jquery-autosize/jquery.autosize', mixitup: 'mixitup/jquery.mixitup.min', jquery: 'jquery/jquery', sammy: 'sammy/lib/sammy', 'sammy.haml': 'sammy/lib/plugins/sammy.haml', haml: 'haml/lib/haml', browser: 'jquery.browser/jquery.browser.min' }, shim: { dropkick: { deps: ['jquery'] }, browser: { deps: ['jquery'] }, 'sammy.haml': { deps: ['haml'] } } }); requirejs(['jquery', 'haml'], function($, Haml) { // They are to be loaded first requirejs(['sammy', 'sammy.haml', 'browser', 'markdown'], function(sammy, shaml, markdow) { // Then the others console.log(Haml); // WORK var app = sammy('#main', function() { var self = this; self.use(sammy.Haml); self.get('/upload', function(context) { context.app.swap(''); var s = context.render('app/templates/upload.haml', {}); s.appendTo(context.$element()) }); }); }); app.run(); }); }); 。页面完全加载后,Haml存在于控制台中。为什么Sammy与HAML的关系并不好,而应该是?

{{1}}

1 个答案:

答案 0 :(得分:0)

终于找到了解决方案!我在主文件中定义了window.Haml = haml,并修改了sammy.haml.js以获取window.Haml函数而不是Haml函数。