2012-12-07 78 views
2

移動數據我很舒服與F3但Backbone.js的總福利局。我想監聽的GET請求一些參數,然後讓他們在通過骨幹模板骨幹視圖中提供,並且做了「正確」的方式....Backbone.js的和無脂肪的框架:約

到目前爲止,這裏是一個簡化版本我在做什麼:

URL的請求:

http://myserver.com/route/?foo=12345 

這裏是我的F3途徑處理代碼:

F3::route('GET /route', 'start'); 
function start() { 
    F3::set('foo', pg_escape_string($_REQUEST["foo"])); 
    echo Template::serve('page.html'); 
} 

我設置foo F3變量,這樣我可以使用它在page.html模板中。以下是page.html中中有:

<script> 
var foo = '{{@foo}}'; 
</script> 

所以現在我有foo的PARAM在JavaScript中的全局變量,我想它變成一個骨幹視圖,其內容填充骨幹模板。

這裏是骨幹視圖中有:

var fooView = Backbone.View.extend({ 
    el: '#foo-container', 
    template: _.template(templates.foo), 
    initialize: function() { 
     this.render(); 
    }, 
    render: function() { 
     this.$el.html(this.template({foo:foo} )); 
    }, 
}); 

而且這裏是支柱模板中有:

templates.foo = '\ 
Here is the value of foo in my template: <%= foo %> \ 
'; 

最後,你瞧,在#富容器DIV獲取數據(當然我執行initialize後)。

問:是否有更好的辦法?有一個更好的方法來做到這一點,數據是通過兩種單獨的模板語言!

回答

2

是的,有一個更好的辦法。骨幹網是專爲從服務器加載一個HTML頁面,然後將所有後續數據是通過AJAX加載JSON響應機構單頁面應用程序。使用正確的URL將您的服務器端請求建模爲Backbone.Model。將視圖渲染綁定到模型的change事件。呼籲模式,這將使一個AJAX GET的要求爲您model.fetch()。將服務器端代碼更改爲使用嵌入式JavaScript發送JSON數據而不是HTML,然後模型將接收JSON並將其解析爲javascript屬性,觸發一個change事件,這將導致視圖被渲染。