Javascript 如何使用主干模型从服务器获取单个图书的详细信息?
我正在使用backbone.js创建简单的图书库。功能非常简单 1)拿到所有的书 2.)获取特定书籍(从服务器) 3)展示书籍 从藏书中我可以得到所有的书。但如何使用模型从服务器上获取一本书呢?我需要对服务器进行ajax调用,以获取书籍的详细信息。因为细节可能很快就会更新(我不想从所有藏书中获得) 到目前为止,我创建了视图、模型和集合,如下所示Javascript 如何使用主干模型从服务器获取单个图书的详细信息?,javascript,model-view-controller,backbone.js,Javascript,Model View Controller,Backbone.js,我正在使用backbone.js创建简单的图书库。功能非常简单 1)拿到所有的书 2.)获取特定书籍(从服务器) 3)展示书籍 从藏书中我可以得到所有的书。但如何使用模型从服务器上获取一本书呢?我需要对服务器进行ajax调用,以获取书籍的详细信息。因为细节可能很快就会更新(我不想从所有藏书中获得) 到目前为止,我创建了视图、模型和集合,如下所示 var Book: Backbone.Model.extend({ defaults:{ name: "", id: "" }
var Book: Backbone.Model.extend({
defaults:{
name: "",
id: ""
}
});
var Library: Backbone.Collection.extend({
model: Book,
url: function(){
return "/books";
},
fetchBooks: function(){
fetch({
success: success_callback,
error: error_callback
});
},
fetchBook: function(bookId){
//how to get single book ?
}
});
如何使用现有模型和集合从服务器获取单个项目?如果需要在集合范围之外使用模型,则需要: 之后,您可以使用给定ID初始化模型并
获取它:
fetchBook: function(bookId){
var book = new Book({ id: bookId });
book.fetch({
success: function() {
console.log('Received book: ' + book.toJSON());
}
});
}
这将导致对`/books/{id}的GET
请求。假设服务器返回JSON,所有结果都将作为book实例上的属性填充
**关于默认设置的注意事项:您绝对不应该将id
默认设置为空字符串,因为主干网使用id
的存在与否来确定模型是否已保存在服务器上。例如,如果您曾经使用model.save(…)
,主干网将在id
不存在时发出POST,或者在id
存在时发出PUT
fetchBook: function(bookId){
var book = new Book({ id: bookId });
book.fetch({
success: function() {
console.log('Received book: ' + book.toJSON());
}
});
}