Ошибка сохранения Backbone.js

Ломаю голову над проблемой с позвоночником...

У меня есть представление магистрали с событием, которое вызывает функцию, сохраняющую текущую модель.

Это простая форма, в представлении я делаю некоторую проверку перед синхронизацией модели.

this.model.save({
    completed : completed,
    company : company,
    revenue : revenue,
    term : term,
    comments : comments,
    probability : probability
  },
  {
    success: function (model, response) {
    console.log('success', model, response);
    Evision.trackRouter.navigate("tracker/", {trigger: true});
    },
    error: function (model, response) {
      console.log('error', model, response);
    }
  } 
;

После успеха он возвращает меня обратно в мою коллекцию моделей, где я могу выбрать другую модель для редактирования, в этот момент, когда я пытаюсь сохранить то, что я получаю в своей консоли, и происходит сбой Chrome.

Если я разверну эту ошибку, это указывает на проблему с функцией, выполняющей вышеуказанное, и моя модель выходит из консоли, но когда я пытаюсь развернуть ее, она пуста?

Стоит сказать, что на 2-м раунде маршрута не происходит ни успеха, ни ошибки.

Спасибо

Изменить №1

Вот ошибка, которую я получаю перед сбоем

    <error>
    w.extend
    w.clone
    e.extend.toJSON
    _.extend.save
    _.extend.update
    LocalStorage.sync
    Backbone.sync
    e.extend.sync
    e.extend.save
    Evision.Views.TrackerDetail.Backbone.View.extend.saveTracker
    (anonymous function)
    j

Редактировать №2 Вот моя модель

Evision.Models.Track = Backbone.Model.extend({

  defaults: function() {
    return {
      id : Evision.trackerList.nextOrder(),
      completed : false,
      created : Utils.datestamp(),
      company : "",
      revenue : "",
      term : "",
      comments : "",
      probability : "",
      success : null
    }
  }


});

person Mart    schedule 30.01.2013    source источник
comment
Какова точная ошибка в консоли, или вы имеете в виду, что Chrome фактически сбой, поэтому вы больше не можете получить доступ к консоли?   -  person jevakallio    schedule 30.01.2013
comment
@fencliff я обновил свой пост с ошибкой, которую я получаю перед сбоем браузера   -  person Mart    schedule 30.01.2013
comment
Интересный. Глядя на трассировку стека, ошибка возникает внутри метода подчеркивания extend. Не могу придумать ни одной причины, по которой это могло бы произойти. Можете ли вы опубликовать код вашей модели?   -  person jevakallio    schedule 30.01.2013
comment
@fencliff странно, что это работает и сохраняется нормально, только когда я пытаюсь сохранить во второй раз, у меня возникает проблема   -  person Mart    schedule 30.01.2013
comment
Да, это действительно очень странно. Используете ли вы подчеркивание или маленькое тире и какую версию? Можете ли вы попробовать console.log(this.model.toJSON()) перед сохранением и посмотреть, все ли в порядке или тоже происходит сбой? Было бы здорово, если бы вы могли попытаться воспроизвести это где-нибудь в Интернете. Вот пустой tinker.io с уже загруженным Backbone и т. д.: tinker.io/d2fed/3 . Вы можете получить эту ошибку там?   -  person jevakallio    schedule 30.01.2013
comment
Я использую подчеркивание... при первом сохранении все нормально, а при втором нет. Посмотрим, смогу ли я запустить его там для вас, спасибо.   -  person Mart    schedule 30.01.2013
comment
Я использовал lodash вместо подчеркивания и получил ту же ошибку в своем приложении. У меня так бывает, когда я сохранил только что созданную модель с успешным обратным вызовом, а потом пытаюсь ее пересохранить. Я заметил, что результат модели toJSON() имеет полные свойства базовой модели, а не только атрибуты. Затем я исправил свою ошибку - после первого сохранения я устанавливал данные модели из ответа с успехом: функция (ответ), но это должно быть успех: функция (модель, ответ). Итак, возможно, вы неправильно установили данные своей модели?   -  person Ivan Klass    schedule 18.07.2013


Ответы (2)


Я точно знаю проблему. У меня была эта проблема не так давно. Первое, на что я посмотрел, это трассировка стека, и, как и в комментариях выше, я столкнулся с проблемой расширения с подчеркиванием. Что вам нужно сделать, так это обновить backbone.js, underscore.js и backbone-localstorage.js (если он у вас есть) до самых последних версий. Проблема заключается в версии!

person nebulr    schedule 26.09.2013

Оказывается, проблема была связана с модифицированной версией Backbone.localStorage Джерома, которая позволяла использовать как удаленное, так и локальное хранилище в приложении. Я заменил на последний адаптер localStorage, и все работает нормально. К сожалению, я не могу найти первоисточник, чтобы сообщить.

person Mart    schedule 31.01.2013