Backbone.js和Fat-Free-Framework:移动数据

时间:2012-12-07 06:01:51

标签: backbone.js fat-free-framework

我对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之后)。

问题:有更好的方法吗?必须有更好的方法来做到这一点,数据通过两种独立的模板语言!

1 个答案:

答案 0 :(得分:2)

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