backbone.js-如何获取本地或服务器数据

backbone.js-如何获取本地或服务器数据,backbone.js,Backbone.js,我对backbone.js非常陌生,为了试用,我制作了一个函数,使用数组附加一个元素。但我不知道如何从服务器或本地路径获取相同的内容 我尝试了一些教程,但仍然没有得到任何好的结果。是否有人可以更正我的函数以从本地文件夹或服务器获取数据 代码: 这是我的本地路径:“…data/data.json” (function($){ var student = [ {name:'student1'}, {name:'student2'}, {name:'student3'}

我对backbone.js非常陌生,为了试用,我制作了一个函数,使用数组附加一个元素。但我不知道如何从服务器或本地路径获取相同的内容

我尝试了一些教程,但仍然没有得到任何好的结果。是否有人可以更正我的函数以从本地文件夹或服务器获取数据

代码:

这是我的本地路径:
“…data/data.json”

(function($){ 
  var student = [
    {name:'student1'},
    {name:'student2'},
    {name:'student3'}
  ]

var model = Backbone.Model.extend({
  defaults:{
    name:'default name'  
  }
});

var collection = Backbone.Collection.extend({
  model:model  
});

var itemViews = Backbone.View.extend({
  tagname:'li',
  render:function(){
    this.$el.html(this.model.get('name'));
    return this;
  }  
})

var view = Backbone.View.extend({
  el: $("#contacts"),
  initialize:function(){
    this.collection = new collection(student);
    this.render();
  },
  render:function(){
    var that = this;
    _.each(this.collection.models, function(item){
      that.renderName(item);
    })
  },
  renderName:function(item){
    var itemView = new itemViews({model:item});
    this.$el.append(itemView.render().el);
  }
});
你可以,也可以。然后,当您运行它时,它会将JSON直接读入单个模型或模型集合。因此,在您的情况下,您的收藏可能看起来像

var collection = Backbone.Collection.extend({
    url: '..data/data.json',
    model: model
});

collection.fetch(); // Could also use collection.reset()

您只需要确保JSON格式正确,以匹配模型的属性。

集合具有
url
属性,该属性链接到可以获取模型的url(当然是正确的JSON格式)

如果您有一个RESTful API,您可以将它们直接绑定到后端的集合

在您的情况下,可以修改集合定义,如下所示

var collection = Backbone.Collection.extend({
  model:model,
  url: '..data/data.json' //OR WHATEVER THE URL IS 
});
然后,在实例化集合时,必须调用fetch()方法来填充集合

   myCollection = new collection();
   myCollection.fetch();

有关更多信息,请参见

主干网将根据需要从服务器发送或接收的内容,在同一url上调用GET、POST、DELETE等。因此,如果您正在构建RESTAPI,那么控制器或路由器应该将适当的函数路由到这些方法。有关精确映射,请参见下文:

create → POST   /collection
read → GET   /collection[/id]
update → PUT   /collection/id
delete → DELETE   /collection/id
作为旁注,如果您无法控制从服务器返回的JOSN,则可以在parse函数中以您喜欢的任何格式对其进行格式化

parse: function(response) { return response.itemYouWantAdded; }
如果您的服务器返回对象中的对象,例如twitter提要,则会出现这种情况

或者,您可以在parse函数中手动从响应填充模型

parse: function(response) { var tmpModel = { 
                            item1:response.item1, 
                            item2:response.item2 
                            }; 
return tmpModel;  }

希望这有帮助

我做了更正,但我不会被解雇。但是控制台会显示数据。当你实例化集合时,你必须获取模型。我更新了帖子…你为什么不试着把你所拥有的东西添加到一个网站上,人们就可以插手了?