Backbone.js не сохраняется в базе данных - PullRequest
0 голосов
/ 15 января 2012

Я использую Django + Backbone.js и .save () не имеет никакого эффекта.Что я делаю неправильно?Это мой основной код JavaScript.Я пытаюсь реализовать список приоритетных дел и не могу понять, как отправить обратно на сервер.Chromium даже не видит попытки сообщения, когда я пытаюсь: T = new Task ();T.save ();

В консоли.

    //$(function() {

      /**
       * Model: Task
       * name, date, importance
       */
      window.Task = Backbone.Model.extend({
        urlRoot: '/api/v1/task/',

        initialize: function() {
          console.log("New task: " + JSON.stringify(this.toJSON()));
        }

        , defaults: function() {
          return {
        date: new Date()
        , name: "New event"
        , importance: 0
          };
        }


      });

      /**
       * Collections: Calendar
       */

      window.Calendar = Backbone.Collection.extend({
          //urlRoot: '/api/v1/calendar',

        initialize: function() {
          console.log("New calendar: " + JSON.stringify(this.toJSON()));
        }

        , model: Task

        , comparator: function(task) {
          return task.get("date");
        }

    /*
        , before: function(thresholdDate) {
          return this.filter( function(task) {
        task.get('date') < thresholdDate;
          });
        }
    */


      });

      window.TaskView = Backbone.View.extend({

        tagName: "li"



      });
     now = new Date();

    Day = Backbone.Collection.extend({
        model: Task,
        url: '/api/v1/task/?format=json&calendar__id=1&date='+ now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate(),
        parse: function(response) {
        return response.objects;
        },

        comparator: function(task){
        return task.get('priority');}

     });

    Month = Backbone.Collection.extend({
        model: Task,
        url: 'api/v1/task/?format=json&date__month='+(now.getMonth()+1),
        parse: function(response){
        return response.objects;
        },
        comparator: function(task){
        return task.get('priority');}

        });


    Year = Backbone.Collection.extend({
        model: Task,
        url: 'api/v1/task/?format=json&date__year='+now.getFullYear(),
        parse: function(response){
        return response.objects;
        },
        comparator: function(task){
        return task.get('priority');}
        });




    // required for saving
          Backbone.sync = function(method, model) {
      console.log(method + ": " + JSON.stringify(model));
      model.id = 1;
    };




    $.fn.serializeObject = function()
    {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
            o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
        });
        return o;
    };

    $(function() {
        $('form').submit(function() {
        var dict = $('form').serializeObject();
        var new_task = new Backbone.Model({
        date: toString(dict.date),
        name: toString(dict.name),
        priority: toString(dict.priority)});
        console.log("new_task =" + new_task);
         new_task.save();
        console.log(dict);

        return false;
        });

    });

    TaskView = Backbone.View.extend({
        el: $("div#app"),
        render: function() {
        $(thi.el).html(this.template(this.model.toJSON()));
       }
    });     
    //});

1 Ответ

1 голос
/ 15 января 2012

Вы переопределили метод Backbone.sync, чтобы регистрировать только консольное сообщение.

Если вы переопределите Backbone.sync, вам нужно вручную выполнить логику сохранения в этом методе.

Поэтому либо удалите код, в котором вы переопределяете Backbone.sync, либо добавьте вызов ajax в этот код для выполнения сохранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...