【问题标题】:Backbone.js modelBackbone.js 模型
【发布时间】:2012-02-12 19:33:10
【问题描述】:

我在这里做错了吗?我正在从 jsonp 响应中填充主干模型。当我在 firebug 中查看第一个控制台语句时,“当前”对象在属性下具有“图标”。但是,当打印 console.log(current.has("icon")) 时,它会返回 false,因此 current.get("icon") 将返回 undefined。

var Current = Backbone.Model.extend({
    url: "A_valid_url",
    sync: function(method, model, options) {
        options.timeout = 10000;
        options.dataType = "jsonp";

        return Backbone.sync(method, model, options);
    },
    parse: function(response, xhr) {
        return response.current_observation;
        }
});

var current = new Current({test: "blah"});
    current.fetch();
    console.log(current);//under attributes there is a "icon"
    console.log(current.has("icon")); //false
    console.log(current.get("icon")); //undefined
    console.log(current.has("test")); //true

【问题讨论】:

    标签: jquery backbone.js underscore.js


    【解决方案1】:
    current.fetch();
    console.log(current);//under attributes there is a "icon"
    console.log(current.has("icon")); //false
    console.log(current.get("icon")); //undefined
    console.log(current.has("test")); //true
    

    那是真正的代码吗?如果是这样,所有这些日志记录都将在异步加载数据完成之前进行。您需要在回调中执行此操作(或绑定到模型上的“更改”事件)。

    console.log(current);//under attributes there is a "icon"
    

    当你记录对象(而不是字符串)时,数据仍然显示在控制台日志中是日志的“feature”:它只会传递一个引用,实际打印发生在稍后(当数据可能已经加载)。

    【讨论】:

      【解决方案2】:

      fetch() 是异步的。请尝试以下操作:

      var current = new Current({test: "blah"});
      current.fetch({
          success: function(){
              console.log(current.get("icon"));
          }
      );
      

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 2014-08-11
        • 1970-01-01
        • 2013-07-27
        • 2011-10-31
        • 1970-01-01
        • 2012-10-11
        • 2023-03-14
        • 2012-04-30
        相关资源
        最近更新 更多