2

ビューとテンプレートをレンダリングするためにマリオネットを使用しています。

ビューにコレクションを渡すだけでなく、追加のカスタム変数をテンプレートに表示する必要もあります。たとえば、以下に示すように「ニックネーム」などです。

現在、コレクションを「message_view」に渡すだけです。「ニックネーム」のカスタム変数を渡すにはどうすればよいですか?

//template JST["backbone/templates/messages/index"]
.message_wrapper
  .title
    //NEED TO DISPLAY NICKNAME here
    %h4 Chat with <%= nickname %>
  %ul.messages
    %li.message.load_more_messages 

ビューとコントローラーは次のように設定されます。

List.Controller =
  listMessages: (nickname) ->
    messages = new Onethingaday.Collections.MessagesCollection()
    messages.url = "/v1/messages/#{nickname}.json"

    messages.remoteGet
      success: (collection, response) =>
        //ONLY PASSING IN COLLECTION TO MESSAGE VIEW, NEED VARIABLE NICKNAME AS WELL
        messages_view = new List.Messages
          collection: collection

        @layout.messagesRegion.show(messages_view)

class List.Message extends Marionette.ItemView
  template: JST["backbone/templates/messages/message"]
  className: 'message'
  tagName: 'li'

class List.Messages extends Marionette.CompositeView
  template: JST["backbone/templates/messages/index"]
  itemView: List.Message
  itemViewContainer: "ul.messages"
4

1 に答える 1

2

コレクションの url プロパティを関数にして、解析を使用してニックネームをコレクションにマップできます。

Onethingaday.Collections.MessagesCollection = Backbone.Collection.extend({
  initialize: function(){
    this._nickname = "a_sane_default";
  },
  setNickname : function(nickname) {
    this._nickname = setValue;
  }
  url: function(){
    return "/v1/messages/" + this._nickname + ".json";
  },
  parse: function(res) {
    var self = this;
    return _.map(res, function(source) {
      obj = _.clone(source);
      obj.nickname = self._nickname;
      return obj;
    }
  }
 });

(コーヒー)

class Onethingaday.Collections.MessagesCollection extends Backbone.Collection
  initialize: -> 
    @_nickName = "a_sane_default"
  setNickname: (nickname) -> 
    @_nickName = nickname
  url: ->
    return "/v1/messages/#{@_nickname}.json"
  parse: (res) ->
    return res.map (source) =>
      obj = _.clone(source)
      obj.nickname = @_nickname
      return obj
于 2013-04-22T11:55:56.143 に答える