【问题标题】:Backbone fetch not receiving server response主干获取未收到服务器响应
【发布时间】:2015-05-29 14:52:00
【问题描述】:

我正在学习主干课程并学习模拟 Twitter 教程。一切似乎都应该正常工作,但是在尝试在 fetch({reset: true}) 上重新呈现我的集合视图时,我得到了一个未定义的对象。

我可以在我的网络资源中看到来自我的 rails 服务器的格式良好的响应 - [{id: 1, content: ...},{id: 2..}...] 等等。但是如果我在整个代码中的断点处停止 - 以及主干自己的成功回调,响应(或 bb 源代码中的响应)是未定义的。

另外,这是我潜伏在这里数月并解决其他人的问题后的第一篇 StackOverflow 帖子!感谢这个美好的社区。​​p>

相关代码在这里:

    $(document).ready(function(){
    var tweets = new TweetsCollection;
    var stream = new TweetsView({collection: tweets});
    stream.render();


    $(".container").append(stream.el);
    tweets.fetch();
    stream.addAll();
    })

    var TweetsCollection = Backbone.Collection.extend({
    model: Tweet,
    url: 'tweets/recent',

    parse: function (response) {
    console.log("In Parse: " + response.length) //this logs "In Parse: 0"
    return response;
    }
    })

    var TweetsView = Backbone.View.extend({

    template: JST['backbone/templates/tweetsTemplate'],

    tagName: "section",

    id: 'tweets-container',

    initialize: function(){
        this.listenTo(this.collection, 'reset', this.addAll)
    },

    render: function(){

        this.$el.html(this.template());

    return this;
    },

  addOne: function(tweet){
    debugger
    var view = new TweetView({model: tweet});
    view.render();
    this.$el.find('#tweets-container').prepend(view.el);
    console.log("addOne this: " + this);
    return this;
  },

  addAll: function(){
    console.log('adding all')
    debugger    //this.collection.length === 0
    this.collection.each(function(tweet){
        this.addOne(tweet);
    }, this);
    return this;
    }

    })

如果需要,我可以包含我的推文模型或视图 - 这里似乎不相关,但我已经盯着这段代码几个小时了,所以我有偏见。

【问题讨论】:

  • 我没有看过你的其余代码,但你应该在创建它的实例之前声明你的集合。
  • 这只是从各种有组织的主干文件复制/粘贴到一个代码片段中。你能说得更具体点吗?
  • 服务器负载是什么样的?它是一个有效的 JSON 序列化数组吗?

标签: ruby-on-rails ajax backbone.js callback fetch


【解决方案1】:

我刚刚想通了。首先,是的,我成功收到了有效的 json 响应。问题是我使用的是 rails-backbone gem,installs its own backbone library with an custom Backbone.sync 方法可以更好地与 rails 配合使用。但是,我也将标准的主干.js 放在了我的供应商/资产中。我怀疑它正在破坏 rails-backbone 自己的实现。删除了供应商主干.js,一切都很好。

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2021-10-17
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多