0

我刚刚开始研究 Backbone-relational,我正面临“HasMany”案例的问题。

首先是模型:

    var Word = Backbone.RelationalModel.extend({
    urlRoot: '/test/api/word',
    idAttribute: '_id'
});

var List = Backbone.RelationalModel.extend({
    urlRoot: '/test/api/list',
    idAttribute: '_id',
    relations: [{
        type: Backbone.HasMany,
        key: 'words',
        relatedModel: 'Word',
        reverseRelation: {
            key: 'list',
            includeInJSON: '_id'
        }
    }]
});

“列表”模型的视图,其中“单词”应该呈现如下:

    var ListWordsView = Backbone.View.extend({
    tagName: 'div',


    initialize: function(){
        _.bindAll(this,'render', 'renderWords');
        //alert("its clicked!," + this.model.get('desc'));
        this.model.bind('change',this.render);
        this.model.bind('reset',this.render);
        this.model.bind('add:words',this.renderWords);
    },

    renderWords: function(word){
        alert("hello it's there!" + word.get("word_name"));
        var wordView = WordView({ model: word });
        this.$("#words_list").append(wordView.render());
    },
    render: function(){
        try{
        $("#list_box.title_name").html(this.model.get('list_name'));
        this.model.toJSON();
        //this.model.get('words').each(renderWords);
        //this.setContent();
        alert(JSON.stringify(this.model));
        }
        catch(e){
            alert("error! : " + e.message);
        }
    } 
});

所以问题出在调用这个 ListWordsView 时(在 List 的 fetch() 完成之后),“add:words”没有被触发,因此没有显示单词。

尝试了几种方法,但没有奏效。我渲染列表本身或其他东西的方式有什么问题吗?

4

0 回答 0