Не удается поместить значения с помощью модального в локальное хранилище

#javascript #modal-dialog #fullcalendar

Вопрос:

Итак, я хочу использовать модальный способ для отправки значений в localstorage, но, похоже, код, который я сделал, неверен. Я знаю только, как отправлять значения с помощью подсказки, но я хочу попробовать использовать модальный.

Вот мой html-код:

 lt;bodygt;  lt;bodygt;  lt;div id="calendar"gt;lt;/divgt;  lt;/bodygt;    lt;div id='datepicker'gt;lt;/divgt;  lt;div class="modal fade" tabindex="-1" role="dialog"gt;  lt;div class="modal-dialog" role="document"gt;  lt;div class="modal-content"gt;    lt;div class="modal-header"gt;  lt;button type="button" class="close" data-dismiss="modal" aria-label="Close"gt;lt;span aria-hidden="true"gt;amp;times;lt;/spangt;lt;/buttongt;  lt;h4 class="modal-title"gt;Create new eventlt;/h4gt;  lt;/divgt;  lt;div class="modal-body"gt;  lt;div class="row"gt;  lt;div class="col-xs-12"gt;  lt;label class="col-xs-4" for="title"gt;Event titlelt;/labelgt;  lt;input type="text" class="title" name="title" id="title" /gt;  lt;/divgt;  lt;/divgt;  lt;div class="row"gt;  lt;div class="col-xs-12"gt;  lt;label class="col-xs-4" for="starts-at"gt;Starts atlt;/labelgt;  lt;input type="text" name="starts_at" id="starts-at" /gt;  lt;/divgt;  lt;/divgt;  lt;div class="row"gt;  lt;div class="col-xs-12"gt;  lt;label class="col-xs-4" for="ends-at"gt;Ends atlt;/labelgt;  lt;input type="text" name="ends_at" id="ends-at" /gt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;div class="modal-footer"gt;  lt;button type="button" class="btn btn-default" data-dismiss="modal"gt;Closelt;/buttongt;  lt;button type="button" class="btn btn-primary" id="save-event"gt;Save changeslt;/buttongt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  

Вот мой js-код:

 lt;script type='text/javascript'gt;  $(document).ready(function () {  $("lt;link rel='stylesheet' type='text/css' href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.1.1/fullcalendar.css' /gt;").appendTo("head");  var Events = Backbone.Collection.extend({});  var EventsView = Backbone.View.extend({  el: document.getElementById("content"),  render: function () {  var self = this;  var events = JSON.parse(localStorage.getItem('events'));  var events = new Events(events);  var jsevents = events.toJSON();  self.$el.fullCalendar({  agenda: 'h:mm{ - h:mm}',  '': 'h(:mm)t',  aspectRatio: 1.5,  droppable: true,  weekend: true,  editable: true,  eventStartEditable: true,  eventDurationEditable: true,  dragScroll: true,  eventDrop: function (event) {  console.log(event);  },  defaultView: 'month',  firstDay: 1,  handleWindowResize: true,  allDayDefault: false,  firstHour: 7,  columnFormat: {  month: 'dddd',  week: 'ddd, dS',  day: 'dddd, MMM dS'  },  header: {  right: 'prev,next',  center: 'title',  left: 'month,agendaWeek,agendaDay'  },  selectable: true,  selectHelper: true,  select: function (start, end) {  $('.modal').modal('show');  },  eventClick: function(event, element) {  $('.modal').modal('show');  $('.modal').find('#title').val(event.title);  $('.modal').find('#starts-at').val(event.start);  $('.modal').find('#ends-at').val(event.end);   },  events: function (start, end, timezone, callback) {  callback(jsevents);  }  });  }  });  var view = new EventsView({  el: '#calendar'  });  view.render();    $("#starts-at, #ends-at").datetimepicker();   $('#save-event').on('click', function() {    var eventData;    if (title) {  eventData = {  title: title,  start: $('#starts-at').val(),  end: $('#ends-at').val()    };  self.$el.calendar('renderEvent', eventData, true);  events.push(eventData);  localStorage.setItem('events', JSON.stringify(events));  }    self.$el.fullCalendar('unselect');   $('.modal').find('input').val('');   $('.modal').modal('hide');  });    });  lt;/scriptgt;  

Когда я запускаю его в браузере, он работает нормально до тех пор, пока я не нажму кнопку «Сохранить изменения», чтобы отправить значение в localStorage, где появится ошибка .

Комментарии:

1. that is where the error appear …хорошо. и в чем именно заключается сообщение об ошибке?

2. Здесь: «Ошибка неперехваченного типа: Не удается прочитать свойства неопределенного (чтение «календарь»)»

3. self существует только внутри вашего render обратного вызова, но вы пытаетесь получить доступ к нему за пределами этой области, я думаю, в этом проблема. Вы могли бы попробовать сделать это глобальным