我对F3很满意,但是对于backbone.js来说,这是一个全新的内容。我正在尝试在get请求中侦听一些参数,然后通过骨干模板在骨干视图中使用它们,并以“正确”方式执行....
到目前为止,这是我正在做的简化版本:
请求的网址:
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 %> \
';
最后,看看#foo-container div获取数据(当然我执行initialize
之后)。
问题:有更好的方法吗?必须有更好的方法来做到这一点,数据通过两种独立的模板语言!
答案 0 :(得分:2)
是的,还有更好的方法。 Backbone专为单页面应用程序设计,从服务器加载单个HTML页面,然后所有后续数据通过AJAX与JSON响应主体加载。使用正确的URL将服务器端请求建模为Backbone.Model
。将视图渲染绑定到模型的change
事件。在模型上调用model.fetch()
,这将为您发出AJAX GET
请求。更改服务器端代码以使用嵌入式JavaScript发送JSON数据而不是HTML,然后模型将接收JSON并将其解析为javascript属性,触发change
事件,这将导致视图呈现。