Это моя проблема:Backbone сбросить коллекцию на выборку
- У меня есть вид контейнера, который содержит коллекцию.
- На странице загрузки я получаю некоторые модели, заполнить эту коллекцию с ними, а затем делают эти модели
- I огнь и событие
- Когда это событие срабатывает, я хочу, чтобы сделать вызов моей API (который возвращает модель, основанную на входных параметрах)
- затем я хочу, чтобы удалить все существующие модели из коллекции, заселить с моими новыми моделями, а затем сделать модели
Это, как я создал свою модель/сбор/вид
var someModel = Backbone.Model.extend({});
var someCollection = Backbone.Collection.extend({
model: someModel,
url: "api/someapi"
});
var someView = Backbone.View.extend({
events: {
"click #refresh": "refreshCollection"
},
initialize: function() {
this.collection.bind("reset", this.render, this);
},
render: function() {
// render stuff
},
refreshCollection: function (e) {
this.collection.fetch({data: {someParam: someValue});
this.render();
}
});
var app = function (models) {
this.start = function() {
this.models = new someCollection();
this.view = new someView({collection: this.models});
this.view.reset(models);
};
};
Моя точка интереса здесь:
refreshCollection: function (e) {
this.collection.fetch({data: {someParam: someValue});
this.render();
}
Я прохожу в некоторых PARAMATERS, и мой апи возвращает JSON массив моделей. Я хочу избавиться от всех существующих моделей в коллекции и поместить все мои возвращенные модели в коллекцию, а затем обновить представление (с помощью render())
Я понимаю, что это возможно с помощью коллекции collection.set или collection .сброс. Оба они занимают множество моделей. Я не массив моделей, чтобы пройти в
Я попробовал:.
this.collection.fetch({
data: {someParam: someValue},
success: function (response) {
doSomethingWith(response.models)
}
});
Но я не знаю, что делать с моделями, когда я получаю их.
Любое нажатие в правильном направлении было бы оценено!
Это не работает. Я сделал console.log (this.collection.models) до и после выборки (с сбросом: true). Коллекция не изменилась. У вас есть идеи, почему это не сработает? –
Что говорит 'console.log (this.collection.toJSON())' сказать до и после вызова 'fetch'? Вы уверены, что ждали, пока сервер не ответит на вызов «fetch» AJAX? –
Ahhh. Я новичок в javascript и асинхронном образе мышления. Так оно и было. –