Backbone.js fetch()JSON到模型get()返回未定义

zour9fqk  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(155)

基本上,我想获取一个JSON文件,并将其存储在模型中。但是,当我尝试通过get()访问属性时,它返回undefined。假设JSON文件包含一个数组游戏,其中包含具有某些属性的对象。这其实并不重要。我只想将它们保存在模型中并访问它们。所以我正在做类似这样的事情。

var player = Backbone.Model.extend({
   initialize: function(app, options) {
      this.app = app;
      var _this = this;

      this.fetch({
         url: "someurl",
         success: function() {
            console.log("success");
         }
      });
   }
});

var instplayer = new player();
instplayer.on('change', function(){
   console.log(model);
   console.log(model.get(games));
})

所以我想我需要一个事件来确保get()在数据真的可用时被调用。但是这仍然返回undefined。我需要做什么呢?

ghg1uchk

ghg1uchk1#

所以我想象你为你的播放器准备了一个json,如下所示(为了让下面的例子正常工作,我已经模拟了它here):

{
    "username": "joe",
    "games": [
        {
            "title": "Pacman"
        }, {
            "title": "Super Mario" } 
    ]
}

下面是一个完整的工作示例,说明我将如何处理和呈现这类数据:
第一个

tvokkenx

tvokkenx2#

我不知道这是不是打字错误,但您没有将model传递给callback

instplayer.on('change', function(){
  console.log(model);
  console.log(model.get(games));
})

它应该

instplayer.on('change', function(model, options){
  console.log(model);
  console.log(model.get("games"));
})

games必须是string而不是variable
我建议您注意的另一件事是json返回什么;有时必须覆盖parse函数才能获得准确的结果。
同样,如果您获取的是array,而不是单个对象,则可能应该使用playerscollection

相关问题