我遇到了一个我无法找到任何文档的问题,因此我不确定是否可以这样做。
我有一个运行良好的主干应用程序,它为我建立了一个井"井"基于传入的iq数据包到pubsub节点(让我们调用这个backboneApp1)。
在这个骨干的模板的最后,以下是:
<div class='row' id='row-participants-<%= chatid %>' style='display: none'>
</div>
这是一个div,我希望附上参与者列表(在加载文档和 MyApp.start 被称为。)
此参与者列表正在使用主干木偶基于另一组传入的iq数据包构建,该数据包列出了特定聊天ID的参与者(让我们称之为backboneApp2)。
因此,在定义要使用的主干区域时,它分为两部分。
第一个是添加区域并定义唯一名称和DOM的地方:
MyApp.addRegions({
participantsContainer... : "#row-participants-..."
})
第二个是告诉骨干网显示视图的地方:
MyApp.participantsContainer.show(aParticipantsView);
所以在上面的场景中,我需要动态创建区域(我该怎么做?可以在 初始化 中为backboneApp1完成,因为我&#39 ; m将chatid传递到我的井中的每个模型中?或者可能在pubsub处理函数中,在我将数据发送到主干之前?)。
然后我需要根据chatid告诉backboneApp2在正确的区域中 show() ,这就是我被困住的地方(chatid也通过了) ,集合中的每个模型都有一个ParticipName值和一个与之关联的chatid值。 如果我打算将参数传递给它,我会在哪里定义区域的第二部分?
请询问是否需要进一步说明。
谢谢。
亲切的问候,
Gary Shergill
编辑:这似乎是解决方案,但我不确定如何在没有下划线的情况下执行此操作Backbone: A list of views inside a view
我的代码:
创建参与者阵列
var participants = [];
$(iq).find('participants').each(function() {
var participantsNodes = this.childNodes;
for (var i = 0; i < participantsNodes.length; i++) {
var participantAttr = participantsNodes[i].attributes
var participant = participantAttr[0].nodeValue;
participants.push({"name": participant, "chatid": chatid});
}
});
model.set({
participants : participants,
chatid : chatid
...
});
ItemView控件
GroupChatView = Backbone.Marionette.ItemView.extend({
template : "#template-groupchat",
tagName : 'div',
className : 'alert alert-custom',
initialize: function(){
this.$el.prop("id", this.model.get("chatid"));
},
...
GROUPCHAT模板
<script type="text/template" id="template-groupchat">
<a id='close-<%= chatid %>' class='close hide' data-dismiss='alert' href='#'>
×
</a>
...
<div class='row' id='row-participants-<%= chatid %>' style='display: none'>
<!-- CUSTOM CODE SHOULD BE HERE? -->
</div>
</script>
答案 0 :(得分:0)
使用下划线解决模板中的集合。