如何使用骨干模型中的对象?

时间:2014-03-22 03:34:50

标签: javascript backbone.js handlebars.js marionette

我有一个模型,它的数据结构看起来像这样。

var myModel = {
    _id: 798698,
    username: "John",
    message: {
        message1: "Some cool messsage",
        message2: "I'm mad Ohio State lost"
    }
}

在使用骨干集合和把手时,如果我要循环来自每个模型的所有消息。前

var model1 = {
    _id: 97878,
    username: "Tony",
    message: {
        message1: "March Madness baby!",
        message2: "Hey There Jason!"
    }
}

var model2 = {
    _id: 86899,
    username: "Jason",
    message: {
        message1: "Hey Tony!",
        message2: "You watching the game?",
    }
}

然后在.hbs

{{#each message}}
    <div class="message">
        {{../username}}: {{this}}
    </div>
{{/each}}

问题出现在集合视图中,当我循环模型时,每组消息都有自己的el示例。

var Marionette = require('backbone.marionette');

var ChatView = Marionette.ItemView.extend({
    className: 'model',
    template: require('../../templates/message.hbs')
});

module.exports = CollectionView = Marionette.CollectionView.extend({
    className: 'collection',
    initialize: function() {
        this.listenTo(this.collection, 'change', this.render);
    },
    itemView: ChatView
});

如上所述的代码会产生类似的结果。

<div class="collection">
    <div class="model">
        <div class="message">
            Tony: March Madness baby!
        </div>
        <div class="message">
            Tony: Hey There Jason!
        </div>
    </div>
    <div class="model">
        <div class="message">
            Jason: Hey Tony!
        </div>
        <div class="message">
            Jason: You watching the game?
        </div>
    </div>
</div>

但问题是,我想要一个直接的消息列表,这样当我添加date sent属性时,我可以将消息的顺序从旧到新排序。此外,如果互动,“托尼”,“杰森”,“托尼”,“杰森”,然后出现问题。但是当添加datetime时,我可以对列表进行排序。

所以我认为我的问题很清楚,基本上我需要帮助让标记成为一个直接的列表,而不是模型所包含的,在数据​​库中它是,所以html很好地代表了数据模型,但那是与我想要完成的事情相反。

0 个答案:

没有答案