2014-03-02 89 views
0

所以我已經看過這個項目:Loading mustache using requirejs小鬍子爲空

但是,它仍然沒有解決我的問題。當我嘗試用鬍鬚編譯html文件時,它說鬍子是空的。

如果以下文件信息不足以指出問題,我的回購是here

main.js

require.config({ 
    baseUrl: 'scripts/lib', 
    paths:{ 
     util : '../util', 
     models : '../util/models', 
     views : '../util/views', 
     collections : '../util/collections', 
     routers : '../util/routers', 
     templates : '../../templates', 
     mustache : 'mustache/mustache', 
     mustacheWrap: 'mustache/mustachewrapper' 
    }, 
    shim:{ 
     'underscore' : { 
      exports: '_' 
     }, 
     'backbone' : { 
      deps:['underscore', 'jquery'], 
      exports: 'Backbone' 
     } 
    } 

}); 

require([ 
    'util/init' 
], 
function(App) { 

    App.init(); 
    console.log("All files loaded successfully!"); 

}); 

DisplaySeries.js

define([ 
    'underscore', 
    'jquery', 
    'backbone', 
    'mustacheWrap', 
    'text!templates/Comic.html', 
    'collections/Comics' 
], 
function(_, $, Backbone, Mustache, Template, ComicCollection) { 

    return Backbone.View.extend({ 

     el: '#pane-container', 

     compiledTemplate: Mustache.compile(Template), <------ Mustache is Null 

     initialize:function() { 
      console.log("DisplaySeriesView: created..."); 
      this.initData(); 
     }, 

     initData:function() { 
      this.collections.comics = new ComicCollection(); 
      this.collections.comics.fetch({ 
       success:function() { 
        console.log("DisplaySeriesView: fetch succeeded."); 
        this.JSON.comics = this.collections.comics.toJSON(); 
        this.render(); 
       }, 
       error:function() { 
        console.error("DisplaySeriesView: fetch failed."); 
       } 
      }); 
     }, 

     render:function() { 
      this.$el.html(compiledTemplate({comics : this.JSON.comics})); 
      return this; 
     } 
    }); 
}); 

回答

0

首先,看起來你下載Mustache.js時抓住了錯誤的文件。 https://github.com/HerrPfister/comic-checklist-app/blob/master/app/scripts/lib/mustache/mustache.js是Mustache.js文件的實際HTML頁面(即非原始源代碼)。

此外,你鏈接的問題是過時的(我可以看到我甚至flagged that a year ago)。鬍子已經是AMD兼容,所以你應該能夠通過「鬍子」簡單地要求它,只要它包含在paths配置元素:

requirejs.config({ 
    paths: { 
    mustache: 'path/to/mustache' 
    } 
}); 

require([ 
    'mustache' 
], function (Mustache) { 
    console.log('Mustache loaded?', Mustache); 
}); 
+0

::捂臉::感謝直截了當的答案。你是第一個告訴我鬍子已經符合AMD標準的人。我終於得到了一切工作! – HerrPfister

+0

沒問題,我們都不時需要那雙新鮮的眼睛;)。很高興我能幫上忙。 – kryger