当前位置: 首页 > 面试题库 >

Backbone.js-即使获取成功,也不会在集合中填充数据

昝阳嘉
2023-03-14
问题内容

我正在尝试从一个简单的JSON文件填充一个集合,这是学习骨干.js的一部分。但是我无法使它工作。

进行了AJAX调用(已通过FireBug验证),但是该toJSON方法返回 undefined

我究竟做错了什么?

theModel =  Backbone.Model.extend();

theCollection = Backbone.Collection.extend({
    model: aModel,
    url: "source.json"
});

theView = Backbone.View.extend({
   el: $("#temp"),
   initialize: function () {
       this.collection = new theCollection();
       this.collection.fetch();
       this.render();
   },
   render : function () {
       $(this.el).html( this.collection.toJSON() ); // Returns blank
   }
});

var myView = new theView;

这是我的JSON:

[{
    "description": "Lorem ipsum..."
 },
 {
    "description": "Lorem ipsum..."
}]

问题答案:

fetch是异步的,如果立即调用,则不会填充您的集合render。要解决此问题,您只需将集合 重置 事件(Backbone的 同步 事件>
= 1.0)绑定到视图render:

theView = Backbone.View.extend({
   el: $("#temp"),

   initialize: function () {
       this.collection = new theCollection();

       // for Backbone < 1.0
       this.collection.on("reset", this.render, this);

       // for Backbone >= 1.0
       this.collection.on("sync", this.render, this);

       this.collection.fetch();
   },

   render : function () {
    console.log( this.collection.toJSON() );
   }
});

请注意bind方法的第三个参数,为该方法提供正确的上下文:http : //documentcloud.github.com/backbone/#FAQ-
this



 类似资料:
  • 请读到最后(我在最后提到console.log) 模型: 收藏: 观点: 在我们的应用程序中。js 服务器输出 我还尝试从模型中删除所有属性防御。还是不行。返回值内容类型为:application/json(已验证),并且是有效的json。 我读过:Backbonejs集合长度总是零 但尽管console.log,显示0长度,也: 不工作! 我还读了Did主干收集自动解析加载的数据 非常感谢 更新

  • 问题内容: 我正在运行Jenkins 1.411版,并使用Maven进行构建。 即使应用程序构建成功,Jenkins仍将其视为不稳定的构建。我已禁用所有测试以隔离问题。 问题答案: 我前一段时间使用hudson / jenkins,但您应该看看Jenkins术语 不稳定的构建 : 如果构建成功构建并且一个或多个发布者报告该构建不稳定,则该构建不稳定。 例如,如果配置了JUnit发布者并且测试失败,

  • 问题内容: 我遇到了一个有趣的问题,即,即使自第一次尝试以来数据库已被杀死,db.Ping()也不返回错误。 源代码如下: 首先,数据库已启动,因此第一个Ping成功。但是,我只是为了进行测试而在其中延迟了一下。在那15秒内,我停止了数据库(),但是db.Ping()仍然成功。 如果我要执行任何实际的查询(通过,或),那么SQL包将与断裂的管道(预计)恐慌。 难道我做错了什么? 还:go版本go1

  • 问题内容: 我遇到了一个有趣的问题,即db.Ping()不会返回错误,即使自第一次尝试以来数据库已被杀死。 源代码如下: 首先,数据库已启动,因此第一个Ping成功。但是,我只是为了进行测试而在其中延迟了一下。在那15秒内,我停止了数据库(),但是db.Ping()仍然成功。 如果我要执行任何实际的查询(通过,或),那么SQL包将与断裂的管道(预计)恐慌。 难道我做错了什么? 还:go版本go1.

  • 这是一个经过验证的API,我试图调用...我可以看到,OPTIONs调用返回200 OK和适当的响应头,仍然火狐不发送API调用,完美地工作在Chrome...有什么想法吗 一些值隐藏在下面... 响应报头 HTTP/1.1 200 OK 访问-控制-允许-起源:* 访问-控制-允许-方法:[POST,GET] 访问-控制-允许-报头:授权 日期:周三,02 Oct 2013 20:52:02 G