2

我是第一次涉足 Backbone 的新手 Web 开发人员。我一直在努力解决的一个主要问题(实际上过去 2 天花了很多时间研究无济于事)是 Backbone 如何与服务器进行通信。

在我之前的项目中,我已经能够使用 PHP 和 jQuery 的$.getJSON方法从我的数据库中获取数据。当我使用 Backbone(例如myCollection.url = "todos.php")时,我也可以做到这一点。然而,在我看过的每一个教程、文档、示例代码中,集合的 url 总是设置为目录,而 urlRoot 是目录/id(例如myCollection.url = "/todos"myModel.urlRoot = "/todos/5".

我的问题是这到底是如何管理的?它似乎比我在调用中添加 GET 参数的传统方式要干净得多。起初我以为这是路由,但这似乎只与设置浏览器历史记录和其他东西有关。我看过的一些源代码使用 SLIM PHP 和 Rails(我都没有使用过),但我不知道任何部分是如何组合在一起的。

4

1 回答 1

5

Backbone 有自己的 api 用于与服务器通信,例如 fetch、save、destory。实际上,这些方法与 jQuery 的 $.ajax 做同样的事情。例如,您以这种方式使用主干的 fetch:

var UserModel = Backbone.Model.extend({     
    url : "rootURL/user",
});
var user = new UserModel;
user.fetch(
    data:{
        userId : 1,          //the webservice will be: rootURL/user?userId=1  GET;
    }
    success:function(model, response, options){
        //callback
    },
    error:function(model, response, options){
        //callback
    },
);

但是您也可以使用与 jQuery 中相同的方式与骨干应用程序中的服务器进行通信。例如:

var UserView = Backbone.View.extend({
    render: function(){
        //do something
    }
    getUser: function(userId){     
        $.get("rootURL/user", 
             { userId : userId},
             success:function(data){
                 //callback
             }
          );
    }
});
于 2013-08-05T04:04:23.180 回答