Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用主干模型从服务器获取单个图书的详细信息?_Javascript_Model View Controller_Backbone.js - Fatal编程技术网

Javascript 如何使用主干模型从服务器获取单个图书的详细信息?

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: "" }

我正在使用backbone.js创建简单的图书库。功能非常简单

1)拿到所有的书 2.)获取特定书籍(从服务器) 3)展示书籍

从藏书中我可以得到所有的书。但如何使用模型从服务器上获取一本书呢?我需要对服务器进行ajax调用,以获取书籍的详细信息。因为细节可能很快就会更新(我不想从所有藏书中获得)

到目前为止,我创建了视图、模型和集合,如下所示

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());
      }
  });
}