Backbone 对象渲染没有方法 apply - 绑定问题

2024-03-27

所以我在我的 AppView 中这样做

var flowerModel = new app.DataModel({title: "flower", values: ["tulip","rose","dandelion"], dataToShow:["tulip", "rose", "dandelion"], data: data});
    var timelineModel = new app.TimeChartModel({data: flowerModel.getDisplayedData(), titlesToShow: flowerModel.get('dataToShow')});


    tableCollection.add(flowerModel);

    var timechart = d3.select("body").append("div").attr("class","timechart");

    this.centerView = new app.TimeChartView({model: flowerModel, el : timechart});
    this.rightView = new app.TableView({model: flowerModel});

在我的 TimeChartView init 方法中我这样做 -

initialize: function(){
        this.model.bind('change','render');
            //other, irrelevant things

}

在我的flowerModel中,我有这个方法,当勾选复选框时该方法有效 -

events: {
    'click .data-type' : 'collapseDatum',
    'click .show-datum' : 'addDatumToShow',
},

addDatumToShow: function(e){
        var test = $(this.$el).find(".datum-list").find(":checked");
        newDataToShow = [];
        _.each(test, function(value,key,list){
            var title = $(value).data("title");
            newDataToShow.push(title);
        });
        this.model.set("dataToShow", newDataToShow);
    },

错误发生在 this.model.set('dataToShow', newDataToShow) 上。

我真的不确定为什么,任何有关如何调试的建议都会有所帮助。我不认为我在这里做了任何疯狂或不寻常的事情。


尝试这个 :

flowerModel.bind('change:dataToShow', function() { 
    timelineModel.set('titlesToShow', flowerModel.get('dataToShow')); 
});

this.model.bind('change', this.render);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Backbone 对象渲染没有方法 apply - 绑定问题 的相关文章

随机推荐