Backbonejs model中的url和urlRoot

详见:http://backbonejs.org/#Model-url

总结:
1. 在调用collection.fetch(..)的时候, 会向collection.url发GET请求,所以在collection中必须定义url.
2. 在调用model.fetch(...)的时候, 如果没有找到model.urlRoot属性,则会向collection.url + / + model.id发GET请求,
    如果找到了urlRoot,则会向model.urlRoot + / + model.id发GET请求。

var Blog = Backbone.Model.extend({});
var BlogCollection = Backbone.Collection.extend({
 url: 'http://localhost:3000/blogs'
});

var blog = new Blog({id: 1});
var blogs = new BlogCollection([blog]);
blogs.fetch(); // GET '/blogs'
blog.fetch(); // GET '/blogs/1'

3. 如果要单独使用blog(不把blog添加到collection的情况下), 调用blog.fetch(..)会报错, 此时要给Blog定义urlRoot属性

var Blog = Backbone.Model.extend({
 urlRoot: 'http://localhost:3000/blogs'
});
var blog = new Blog({id: 1});
blog.fetch(); // GET '/blogs/1'
4. 代码: https://github.com/uniquejava/backbone.test

你可能感兴趣的:(url,backbone,urlRoot)