簡體   English   中英

在主干模型中將數組呈現為列表

[英]Rendering an Array as a List within a Backbone model

這是我發現的另一篇文章的擴展: 骨干:視圖內部的視圖列表

我很難理解這一點(我以前從未使用過下划線),所以我認為最好發布一個與此有關的新話題。

情境

我有一個創建的群聊模型,並列出了各種信息。 這包括該群聊中的參與者列表。 我需要將該列表顯示為正在渲染的模型的一部分。

創建參與者數組

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"));
    },

    ...

使用的模板

    <script type="text/template" id="template-groupchat">

        <a id='close-<%= chatid %>' class='close hide' data-dismiss='alert' href='#'>
            &times;
        </a>
        ...
        <div class='row' id='row-participants-<%= chatid %>' style='display: none'>
        <!-- CUSTOM CODE SHOULD BE HERE? My attempt:
            <% _.each(participants, function () { %>
                 <%= name %>
            <% }); %>
        -->
        </div>

    </script>

這總是返回一個錯誤,指出“名稱”不存在。 我不確定原始文章中我做錯了什么,我認為我將participants數組錯誤地傳遞給了underscore.each()部分。

我覺得問題之一是您沒有將任何參數傳遞給_.each方法。

<% _.each(participants, function (participant) { %>
   <%= participant.name %>
<% }); %>

希望它能解決您的問題。

使用_.each函數的正確方法是:

<% _.each(participants, function (element,index) { %>
           <%= element.name %>
<% }); %> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM