1
스크립트 수정에 도움주세요. jsfiddle모델을 필터링하는 방법은 무엇입니까?
나는 모델 수집을 위해 단순히 필터를 만듭니다. 모든 모델에는 '제목'필드가 있습니다. 페이지 구성 : 제목 및 검색 필드 목록.
검색 필드에 사용자가 입력 한 문자가 있지만 제목 목록은 필터링되지 않습니다. 이 문제
모델과 모음 :
APP.NewsModel = Backbone.Model.extend({
defaults:{
"title": ""
}
});
APP.NewsModelsCollection = Backbone.Collection.extend({
model: APP.NewsModel,
search : function(letters){ console.log(letters)
if(letters == "") return this;
var pattern = new RegExp(letters,"gi");
return _(this.filter(function(data) {
return pattern.test(data.get("title"));
}));
}
});
전망 :
APP.Filter = Backbone.View.extend({
initialize: function() {
var self = this;
this.collection = new APP.NewsModelsCollection();
var model1 = new APP.NewsModel({title: 'qwerty'}),
model2 = new APP.NewsModel({title: 'qwddez'}),
model3 = new APP.NewsModel({title: 'zxxc'});
this.collection.add(model1);
this.collection.add(model2);
this.collection.add(model3);
this.render();
$('#filterTitleField').on('keyup', function() { self.search() });
},
render: function() {
this._createNewsUnits();
return this;
},
search: function(e){ console.log('search')
var letters = $("#filterTitleField").val();
this.collection.search(letters);
console.log(this.collection.models)
this._createNewsUnits();
},
_createNewsUnits: function() {
$('#newsList').html('');
this.collection.each(function (news) {
var news = new APP.News({model: news});
$('#newsList').append(news.render().el);
}, this);
}
});
APP.News = Backbone.View.extend({
initialize: function(model) {
this.model = model.model;
},
className: 'news',
template: _.template($('#newsUnitTpl').html()),
render: function() {
this.$el.html(this.template({title: this.model.get('title')}));
return this;
}
});
필터. 'search'는 ** 새로운 ** 목록을 반환합니다. 원래의 것을 변경하지 않습니다. –