Backbone.js和无脂肪框架:移动数据

Backbone.js和无脂肪框架:移动数据,backbone.js,fat-free-framework,Backbone.js,Fat Free Framework,我对F3很满意,但对backbone.js完全是新手。我正在尝试侦听get请求中的一些参数,然后通过主干模板在主干视图中提供它们,并以“正确”的方式进行操作 到目前为止,这里是我正在做的一个简化版本: 请求的Url: http://myserver.com/route/?foo=12345 这是我的F3路线处理代码: F3::route('GET /route', 'start'); function start() { F3::set('foo', pg_escape_string(

我对F3很满意,但对backbone.js完全是新手。我正在尝试侦听get请求中的一些参数,然后通过主干模板在主干视图中提供它们,并以“正确”的方式进行操作

到目前为止,这里是我正在做的一个简化版本:

请求的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>
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 %>  \
';
以下是主干模板中包含的内容:

<script>
var foo = '{{@foo}}';
</script>
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 %>  \
';
templates.foo=\
以下是我的模板中foo的值:\
';
最后,瞧,#foo container div获取了其中的数据(当然是在我执行
initialize
之后)


问题:有更好的办法吗?必须有更好的方法来做到这一点,数据通过两种不同的模板语言传递

是的,有更好的办法。主干网是为单页应用程序设计的,这些应用程序从服务器加载单个HTML页面,然后通过带有JSON响应体的AJAX加载所有后续数据。将服务器端请求建模为
主干网。使用正确的URL建模
。将视图渲染绑定到模型的
change
事件。在模型上调用
model.fetch()
,这将为您发出AJAX
GET
请求。更改服务器端代码以发送JSON数据,而不是使用嵌入JavaScript的HTML,然后模型将接收JSON并将其解析为JavaScript属性,触发
Change
事件,从而呈现视图