【问题标题】:Model not updated Backbone.js模型未更新 Backbone.js
【发布时间】:2020-05-18 06:29:18
【问题描述】:

在我的主干项目中,我的模型在我在集合中调用的“添加”方法之后没有更新。我不明白为什么。

我确定我做错了什么,但我不知道是什么。

https://github.com/blured75/CardScores/blob/master/public/js/tweets.js

在我的视图的初始化函数中,我调用 bind 'add' 到 this.render(视图的)

initialize: function() {
            this.model.on('add', this.render, this);
},

在我看来的render函数中,this.model没有具体的属性,只有{length: 1, models: Array(1), _byId: {…}, _events: {…}}

render: function() {
    console.log('in render this.model', this.model);
    ...
}

用于#new-tweet 的提交事件的函数被很好地调用并且推文对象被很好地填充:

The method $('#new-tweet').submit(function(ev) {
            var tweet = new Tweet({ author: $('#author-name').val(), status: $('#status-update').val()});   
            console.log('adding : ', tweet.toJSON());
            tweets.add(tweet);

            return false;
        });

除了使用旧框架之外,您是否发现了一些错误?

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    [描述]
    问题是,_.each 的第一个参数必须是“列表”。 (https://underscorejs.org/#each)

    作为 TweetsView 中的 console.log(this.model),虽然它是一个骨干集合...

    它是一个对象。

    {
        length: 1, 
        models: Array(1), 
        _byId: {…}, 
        _events: {…}
    }
    

    所以每个都不能正常工作。

    [改进]
    我提供了两种方式:

    1. 使用Backbone.Collection的each函数。
    this.model.each(function(tweet, i) {
        console.log(i);
        console.log(tweet); // Undefined ???
        console.log((new TweetView({model: tweet})).render().$el);
        self.$el.append((new TweetView({model: tweet})).render().$el);
    });
    
    1. 因为this.model.models是Array,所以直接访问。
    _.each(this.model.models, function(tweet, i) {
        console.log(i);
        console.log(tweet); // Undefined ???
        console.log((new TweetView({model: tweet})).render().$el);
        self.$el.append((new TweetView({model: tweet})).render().$el);
    });
    

    【讨论】:

    • 太棒了,你让我很开心。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2012-02-02
    • 2011-07-15
    • 2012-08-08
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多