У меня есть следующая модель:
window.MyModel = Backbone.Model.extend({
initialize: function(props){
this.url = props.url;
}
parse: function(){
// @override- parsing data fetched from URL
}
});
// instantiate
var mod = new MyModel({url: 'some/url/here'});
Я использую эту глобальную переменную 'mod' для извлечения некоторых данных в эту модель из бэкэнда.
// fetch
mod.fetch({
success: function(){...},
error:...
});
Все вышеперечисленное работает хорошо.... Моя проблема :Я хочу повторно использовать эту модель, изменив сброс URL-адреса и выборку вызова, но она каким-то образом не обновляет URL-адрес. Я пробовал следующее:
mod.fetch({
data: {url:'/some/other/url'},
postData: true,
success: function(){ //process data},
error:...
});
mod.set({url: '/some/other/url'});
// called fetch() without data: and postData: attributes as mentioned in previous
Как мне установить URL-адрес для моей модели, чтобы я мог вызывать fetch (), и он извлекал данные из обновленного URL-адреса? Я что-то упускаю. Спасибо за любые указания..
ОБНОВЛЕНИЕ 1:В основном,Я не могу получить обновленные значения, если я это сделал
model.set({url: 'new value'});
затем
model.fetch();
«модель» — это глобальная переменная. Создание нового экземпляра «модели» работает:
model = new Model({url:'/some/other/url'});
model.fetch();
однако работает как надо. Означает ли это, что экземпляр модели постоянно привязан к URL-адресу и его нельзя сбросить?
ОТВЕТ НА МОЙ ВОПРОС в ОБНОВЛЕНИИ 1 Экземпляр модели не привязан к URL-адресу на постоянной основе. Его можно сбросить динамически. Пожалуйста, прочитайте подробное объяснение @tkone, а затем решение @fguillens для лучшего понимания.