2012-10-09 99 views
0

我正在嘗試使用phonegap,backbone.js和coffeescript構建移動應用程序。我想要做這樣的事情:如何與骨幹網同步加載外部模板

class MyApplication.Views.EntriesIndex extends Backbone.View 
    template: load('my/template') //It will load the external file my/template.tpl 

    render: -> 
    $(@el).html(@template()) 
    this 

我想同步加載它。我已經看到require.js,但我覺得這太簡單了。我看到比我可以使用JST作爲rails應用程序,但是我沒有找到如何在沒有鏈接的情況下使用它,我的應用程序只能在客戶端工作。

什麼是更好的方式同步加載模板?

我認爲最好是預加載它。

我的應用程序將託管在客戶端。

+1

您是否嘗試過使用async設置爲false的$ .ajax?假設你正在使用jQuery – Peeter

+0

也是你的應用程序將被託管在客戶端或服務器(phonegap基本上只是包裝它)? – Peeter

+0

我必須在初始化時加載模板,將其存儲在成功上並緩存它以僅加載一次?嗯,它可以是一個解決方案。有沒有更好的辦法?它認爲更好的解決方案是預編譯它。 – Dougui

回答

1

我這樣做:

class HomeView extends Backbone.View 
    template: -> 
    template = "views/home.html" 
    cache = window.templates[template] 
    return cache if cache 

    cache = $.ajax(
     url: "views/home.html" 
     async: false).responseText 

    window.templates[template] = cache 
    return cache 

    render: -> 
    @$el.html(@template()) 

而且,在我的應用程序的initalization:

window.templates = {} 

所以我可以異步加載模板,並將它緩存。顯然,我會做一些重構,並且可能會將它放入JQuery函數中。

感謝您的幫助。

編輯

更改我的代碼來做到這一點:

class Loader 
    @files: {} 
    @load: (path) -> 
    return @files[path] ||= $.ajax(url: path, async: false).responseText 

現在我可以這樣做:

class HomeView extends Backbone.View 
    template: -> 
    Loader.load("views/home.html") 

    render: -> 
    @$el.html(@template()) 

這是JavaScript的版本:

var Loader; 

Loader = (function() { 

    function Loader() {} 

    Loader.files = {}; 

    Loader.load = function(path) { 
    var _base; 
    return (_base = this.files)[path] || (_base[path] = $.ajax({ 
     url: path, 
     async: false 
    }).responseText); 
    }; 

    return Loader; 

})(); 

我可能會在github上發佈代碼...

0

如果您的應用程序作爲一個PhoneGap的應用程序,你可能也包括你的模板,在HTML:

Explanation of <script type = "text/template"> ... </script>

+0

我已經看到了這個,但是不可能這樣做:'

  • 11. 骨幹模型同步狀態
  • 12. 如何在引導/創建時將骨幹視圖與附加模型同步?
  • 13. 創業板的骨幹網如何生成其模板
  • 14. 同步處理資料與骨幹推
  • 15. 下劃線/骨幹網模板.get
  • 16. 骨幹SQLite同步覆蓋
  • 17. 骨幹收集同步
  • 18. 定製骨幹同步
  • 19. 流星和骨幹同步
  • 20. 如何使用骨幹模板?
  • 21. 如何使骨幹模板更簡單
  • 22. 在模板中選擇與骨幹
  • 23. 渲染每一行與模板 - 骨幹
  • 24. 動態JST模板選擇與骨幹
  • 25. 在骨幹中外部化HTML模板:優點/缺點
  • 26. 骨幹查看模板 - 它們存儲作爲外部文件
  • 27. 如何通過id找到骨幹網中的骨幹模型?
  • 28. 骨幹不加載
  • 29. underscore.js模板||綁定/追加骨幹
  • 30. 骨幹使用外部js