我是第一次潜入Backbone的新手网络开发人员。我一直在努力解决的一个主要问题(实际上花费了大量的过去2天研究无济于事)是Backbone如何与服务器进行通信。
在我之前的项目中,我已经能够使用PHP和jQuery的$.getJSON
方法从我的数据库中获取数据。当我使用Backbone(例如myCollection.url = "todos.php"
)时,我也能够这样做。但是,在我看过的每个教程,文档和示例代码中,集合的url始终设置为目录,urlRoot是目录/ id(例如myCollection.url = "/todos"
和myModel.urlRoot = "/todos/5"
。
我的问题是这是如何管理的?通过向我的调用添加GET参数,它似乎比我传统的方式更清晰。起初我以为这是路由,但这似乎只与设置浏览器历史记录和内容有关。我看过的一些源代码使用的是SLIM PHP和Rails(我都没用过),但我不知道任何部分是如何组合在一起的。
答案 0 :(得分:5)
Backbone有自己的api用于与服务器通信,例如fetch,save,destory。事实上,这些方法与jQuery的$ .ajax做同样的事情。例如,您以这种方式使用主干的提取:
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
}
);
}
});