синхронизация модели с сервером asp.net с использованием backbonejs и jquery - PullRequest
1 голос
/ 06 октября 2011

Я хотел посмотреть, как можно сохранить модель на сервере, используя метод 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. Но все, что он делает, это записывает аргументы в консоль в функции синхронизации.

1 Ответ

1 голос
/ 06 октября 2011

Я думаю, единственная причина, по которой вы не видите никаких запросов Ajax, заключается в том, что вы переопределили метод Model.sync.Обычно это можно сделать только в том случае, если вы хотите заменить синхронизацию Ajax по умолчанию, реализованную в Backbone.sync.Смотрите следующую строку в Model.fetch в backbone.js:

return (this.sync || Backbone.sync).call(this, 'read', this, options);

Я провел быстрый тест с вашим кодом и вижу запросы Ajax, если я переименую ваш метод Model.sync.

...