Есть ли способ создать свой собственный метод ajax, чтобы сделать запрос POST вместо сохранения?Backbone.js пользовательский запрос модели
ответ
Сохранение не только вызывает запрос AJAX, но и вызывает события и проверку, поэтому я не буду писать свой собственный метод сохранения. Однако, вы всегда можете написать модель функции, как:
var SomeModel = Backbone.Model.extend({
urlRoot: "/some/url",
altSave: function() {
$.post(this.urlRoot, {
/*assemble your post data*/
}, function (response) {
});
}
});
var s = new SomeModel();
s.altSave();
вызывающему s.altSave();
будет срабатывать запрос POST.
Это правильно, и это работает, но я думаю, что это лучшее решение:
'use strict';
define([
'underscore',
'backbone',
'config/appConfig'
],function(_,Backbone,Config){
var StatsModel = Backbone.Model.extend({
urlRoot: Config.urlStats,
url: function() {
var url = this.urlRoot + "/resource";
return url;
},
defaults: {
metricID: '',
groupByID: ''
},
requestStats: function(opts) {
var url = this.url(),
options = {
url: url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(this.attributes)
};
_.extend(options, opts);
return (this.sync || Backbone.sync).call(this, null, this, options);
}
});
return StatsModel;
});
Большое спасибо
Нет, потому что: 1. он переопределяет значение по умолчанию 'url'' Backbone.Model', что необязательно, 2. Исходная реализация Backbone.sync может измениться, 3. вам нужно найти источник базы данных, чтобы узнать что происходит на самом деле происходит в 'return (this.sync || Backbone.sync) .call (this, null, this, options);'. Вы можете это знать сегодня, но через несколько месяцев вы его создадите, представьте, что произойдет с новыми разработчиками. Мое решение является более простым и понятным для разработчиков и не требует, чтобы вы врывались в источник библиотеки. Используйте это, если вы хотите написать код поддерживаемого кода. –
Действительно, вы правы. – mmontes11
Вы можете, но есть дебаты относительно того, является ли или не хороший подход. Для более подробного обсуждения просмотрите http://stackoverflow.com/questions/11331604/backbone-js-ajax-calls. – snozza
Простым способом является использование '$ .ajax' с' type = post' вместо использования базовой модели. Зачем вам это делать в первую очередь? – AdityaParab
Я уже нашел решение. Большое спасибо. – mmontes11