Я хотел посмотреть, как можно сохранить модель на сервере, используя метод model.save()
, когда в расширенной модели указано urlRoot
, но запрос ajax никогда не срабатывает, когда я запрашиваю model.fetch()
или do model.save()
. примечание: есть надежда, что это возможно без использования Коллекции, я полагаю?
HTML
<div id="placeholder"></div>
<script type="text/template" id="view_template">
Hello <%= name %>, here is your script <%= script %>
</script>
Модель
window["model"] = Backbone.Model.extend({
initialize: function () {
console.log("CREATED");
},
defaults:{
name:"Please enter your name",
script:"Hello World"
},
urlRoot: "index.aspx",
validate: function (attrs) {
},
sync: function (method, model, success, error) {
console.log("SYNCING", arguments);
}
});
View
window["view"] = Backbone.View.extend({
template:_.template($("#view_template").html()),
initialize: function () {
console.log("INITIALISED VIEW");
this.model.bind("change","render",this);
},
render: function (model) {
console.log("RENDERING");
$(this.el).append(this.template(model));
return this;
}
});
Применение
$("document").ready(function () {
var myModel = new model({
name: "Stack Overflow",
script: "alert('Hi SO')"
});
var myView = new view({
model: myModel,
el: $("#placeholder")
});
console.log("SAVING");
myModel.save();
console.log("FETCHING");
myModel.fetch();
});
как вы можете видеть в приложении, я звоню save & fetch
, но согласно документации это должно запустить ajax-запрос с POST -> SAVE
& GET -> FETCH
. Но все, что он делает, это записывает аргументы в консоль в функции синхронизации.