я есть набор JSON,Как группировать данные по той же стоимости с использованием _.each()
[{"gp_id":"1","gp_name":"ADMIN","gp_location":"Headquater"},{"gp_id":"2","gp_name":"OE.TT","gp_location":"Timah Tasoh"},{"gp_id":"3","gp_name":"OP.TT","gp_location":"Timah Tasoh"},{"gp_id":"4","gp_name":"USER.HQ","gp_location":"Headquater"}]
Как вы можете видеть, некоторые повторяющиеся значения индекса «gp_location». Как я добиться результата, как это с помощью _.each (underscoreJs)
<select>
<optgroup label="Headquater">
<option>ADMIN</option>
<option>USER.HQ</option>
</optgroup>
<optgroup label="Timah Tasoh">
<option>OP.TT</option>
<option>OE.TT</option>
</optgroup>
</select>
до сих пор, что я должен достичь это
render: function() {
this.$el.empty();
var container = document.createDocumentFragment(),
modelgroups = _.groupBy(this.collection.models, "gp_location");
_.each(modelgroups, function(group, n) {
var optgroup = document.createElement('optgroup');
optgroup.label = n;
_.each(group, function(base) {
optgroup.appendChild(new BaseListItemView({model: base}).render().el)
});
container.appendChild(optgroup);
});
this.$el.append(container);
return this;
}
Я занимаюсь разработкой приложений backboneJS. Как вы можете видеть BaseListItemView представляет собой элемент html option
. Я не уверен, о том, как производить другой вид для optgroup
Update: здесь код BaseListItemView
return Backbone.View.extend({
tagName: "option",
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.html(this.model.attributes.gp_name + ', ' + this.model.attributes.gp_location);
this.$el.attr("value" , this.model.attributes.gp_id)
return this;
}
});
Надежда кто-то может помочь мне.
Большое спасибо
Можете ли вы показать нам код Вашего 'BaseListItemView' (или это' render' метод как минимум), пожалуйста? – Bergi
ok см. Обновление выше – Muhaimin