Имам модел на разговор и изглед, който показва този модел. Този модел се извлича от сървъра без проблем (свойството 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", и сега заявката за ИЗТРИВАНЕ се изпраща до сървъра без грешка.