Подтвердить что ты не робот

Не может получить cid модели при рендеринге базовой схемы по шаблону

Я пытаюсь отобразить базовую коллекцию в шаблоне, который построен с помощью mustache.js. Проблема в том, что я не смог получить синтаксис модели в шаблоне. Мой код

        <div class="phone span4">
            <h5> Phone Appointments</h5>
            {{ _.each(slots, function(slot) { }}
                {{ if(slot.aptType == "P"){ }}
                    <h6 cid="{{=slot.cid}}"  aptId="{{=slot.aptId}}"> {{=slot.beginTime}}  - {{=slot.endTime}} </h6>
                {{  }   }}
            {{  }); }}
        </div>

из приведенного выше кода, я могу получить aptId, beginTime и End Time, но не Cid. Как получить Cid модели из коллекции при рендеринге ее на шаблоне?

и мой метод визуализации в представлении выглядит так:

    render:function(){
    var template = _.template($("#slot-display-template").html());
    compiledTmp = template({slots: this.collection.toJSON()})
    this.$el.append(compiledTmp);
    }

Также есть ли недостаток использования cid в качестве уникального идентификатора модели?

Спасибо заранее!

4b9b3361

Ответ 1

cid не включен по умолчанию в выход toJSON. Вам необходимо переопределить toJSON в определении модели и включить cid.

toJSON: function() {
  var json = Backbone.Model.prototype.toJSON.apply(this, arguments);
  json.cid = this.cid;
  return json;
}

Ответ 2

Если вам нужно решение ad hock, это также сработает:

var params = _.extend({}, this.model.toJSON(), {cid: this.model.cid})

Ответ 3

Кстати, если вам не нужно расширять поведение всех моделей, вы можете просто добавить cid к своей модели с помощью метода parse. Например, у вас есть коллекция "Коллекция". Вы можете указать модель для этой коллекции и переопределить метод parse, чтобы привязать модель cid к ответу.

var Collection = Backbone.Collection.extend({
    model: Model
});

var Model = Backbone.Model.extend({
    parse: function(response) {
        response.cid = this.cid;
        return response;
    }
});

Итак, вы сможете получить cid из атрибутов модели.