2013-10-20 4 views
0

requirejs + jquery + sammy.js + hamljs를 사용하고 있습니다. 템플릿 엔진 haml이 작동하지 않습니다. sammy.haml을 실행하지만 Haml은 main.js에 대해 정의되었지만 sammy.haml에 대해서는 정의되어 있지 않으며 실행할 수 없습니다. 페이지가 완전히로드 된 후, 콘솔에 대한 Haml이 존재합니다. 왜 Sammy가 HAML과 잘 어울리지 않는 이유는 무엇입니까?로드 중 및 Hamljs 동안의 Jsu 문제

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(); 

    }); 
});  

답변

0

마지막으로 솔루션을 찾았습니다! 주 파일에 window.Haml = haml을 정의하고 sammy.haml.js을 수정하여 window.Haml 함수 대신 Haml 함수를 사용하십시오.