2012-12-07 55 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事件,这将导致视图被渲染。