2013-03-29 7 views
0

У меня есть приложение для рельсов, и я пытаюсь добавить некоторый интерактивный контент tom мои взгляды. Таким образом, у меня есть bootstrap-datepicker-rails gem для datepicker и backbone.js для обработки данных. Но когда я пытаюсь слушать событие changeDate datepicker, я получаю некоторые ошибки. Подключаем событие в представлении не работает вообще, метод просто не дозвонились:backbone и bootstrap-datepicker

events: 
    'changeDate #dpstart': 'tryit' 

tryit: -> 
    console.log(this) 
    this 

Когда я пытаюсь поймать событие в моем маршрутизаторе, я не могу получить доступ к моей коллекции:

initialize: -> 
    @datepicker = $('#dpstart').datepicker({ 
     "format": "yyyy-mm-dd", 
     "weekStart": 1, 
     "autoclose": true 
     })  
    @datepicker.on('changeDate', @refetch, this) 

Таким образом, он выдает ошибку, потому что он не может получить этот контекст и

initialize: -> 
    @datepicker = $('#dpstart').datepicker({ 
     "format": "yyyy-mm-dd", 
     "weekStart": 1, 
     "autoclose": true 
     })  
    @datepicker.on('changeDate', @refetch) 

этот способ работает нормально, но в @refetch я не получаю backb один контекст так не может получить доступ к моделям. Что мне нужно сделать?

ответ

0

Либо свяжите контекст самостоятельно с this (так как у вас есть символ подчеркивания или понижения). Или используйте this method от Backbone, чтобы сделать привязку (лучше).

О том, почему первый вызов не вызван, убедитесь, что метод datepicker возвращает элемент jQuery, с которым вы привязываете его ($ ('# dpstart')). Я так не думаю, поэтому вы в основном слушаете неправильную вещь, которую я предполагаю.

+0

Метод ListenTo() выглядел как идеальное совпадение, но он производит ту же ошибку, что и в моей второй части кода. Теперь попробуем первый предложенный вами метод. = ( –

+0

Я все еще действительно озадачен второй частью кода, хотя. Не могли бы вы вставить точную ошибку? @TimurMinulin – Loamhoof

+0

Конечно. Uncaught TypeError: Object # не имеет метода 'apply' - где Managers - мой маршрутизатор. this.listenTo (@datepicker, 'changeDate', @tryit) - это событие, которое я использовал. –