我有一个模型,它的数据结构看起来像这样。
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
属性时,我可以将消息的顺序从旧到新排序。此外,如果互动,“托尼”,“杰森”,“托尼”,“杰森”,然后出现问题。但是当添加date
和time
时,我可以对列表进行排序。
所以我认为我的问题很清楚,基本上我需要帮助让标记成为一个直接的列表,而不是模型所包含的,在数据库中它是,所以html很好地代表了数据模型,但那是与我想要完成的事情相反。