Не может получить 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 в качестве уникального идентификатора модели?
Спасибо заранее!
Ответы
Ответ 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
из атрибутов модели.