У меня есть модель разговора и представление, отображающее эту модель. Эта модель загружается с сервера без каких-либо проблем (в этом случае свойство url работает нормально), и представление отображается. Однако, когда я пытаюсь уничтожить модель в функции представления, я получаю сообщение об ошибке «Должно быть указано свойство или функция "url"», хотя когда я отображаю указанный URL-адрес прямо перед вызовом уничтожения, это именно тот URL должен быть.
Вот код модели:
MessageManager.models.Conversation = Backbone.Model.extend({
defaults: {
uid: '',
title: '',
messages: [],
users: [],
dateUpdated: null,
isNew: true,
message: ''
},
url: function(){
var url = '/api/conversations';
if(this.get('uid').length > 0) url += '/'+this.get('uid');
return url;
}
});
И вид:
MessageManager.views.ConversationFull = Marionette.CompositeView.extend({
template: this.template(MessageManager.templates.ConversationFull),
childView: MessageManager.views.MessageListItem,
childViewContainer: '#message-container',
events: {
'click a#btn-delete-conversation': 'deleteConversation'
},
deleteConversation: function(e){
e.preventDefault();
var self = this;
console.log(self.model.url()); //This returns a correct url
self.model.destroy({//This fires the error
error: function(model, result, xhr){
console.log(result.responseText);
},
success: function(model, response, options){
MessageManager.conversations.sync();
AMMain.router.pNavigate('welcome/');
}
});
}
});
Может ли кто-нибудь дать некоторое представление о том, как решить эту проблему? Что-то не так в том, как я объявляю модель?
РЕДАКТИРОВАТЬ: следует отметить, что другие вызовы (например, выборка или синхронизация) в этой модели вызывают ту же ошибку, хотя исходная выборка работает без проблем.
EDIT2: Ну, еще не совсем из сковороды, но я изменил способ определения URL-адреса модели, используя urlRoot и атрибут «id», и теперь запрос DELETE отправляется на сервер без ошибок.