骨架模型.获取非设置值

Backbone model.fetch not setting values

本文关键字:设置 获取 模型      更新时间:2023-09-26

这是我的主干模型构造器

define([], function(){
     return Backbone.Model.extend({
         urlRoot:'/dummy-api/Instances',
         defaults:{
             name:null,
             read:false,
             write:false
         },
         initialize: function () {
             this.fetch();
             console.log("after init "+this.get("id")+" name="+this.get("name"));
         }
     })
});

和/dummy-api/Instances/1是已经把这个

{"id":1,"name":"bangladesh"}

我用这个

将这个模型附加到一个视图上
define(['models/instance.js'], function(Model){
     View = Backbone.View.extend({
            initialize: function() {
            this.model = new Model({
                id:1
            });
        });
     return new View();
});

URL正在被调用,它的内容如上所述,我可以在firebug中看到,但是"name"没有被设置。我知道我可以提供一个解析函数,因为我使用的是sequeize -rest -extended,我可能需要这样做,但我首先希望backbone从一个固定的文件中读取和设置。文档已经足够直接了,我所拥有的应该可以工作,那么我是否做了其他不好的事情呢?

在模型之前记录值。取回已完成

设置一个回调,在获取成功完成后记录值,它应该像预期的那样工作。

define([], function(){
    return Backbone.Model.extend({
        urlRoot:'/dummy-api/Instances',
        defaults:{
            name:null,
            read:false,
            write:false
        },
        initialize: function () {
            this.fetch({
               success: function() {
                   console.log("after init "+this.get("id")+" name="+this.get("name"));
               }.bind(this)
            });
        }
    })
});

这是必要的,因为this.fetch()异步执行XMLHttpRequest,并继续执行下一行代码,而该请求由浏览器在单独的"线程"中执行(出于所有意图和目的)。