Я получаю Cannot call 'start' of undefined
при вызове...
Backbone.history.start()
При выполнении некоторых проверок Backbone возвращает объект, но Backbone.history возвращает undefined.
Что может быть причиной этого?
Спасибо
Я получаю Cannot call 'start' of undefined
при вызове...
Backbone.history.start()
При выполнении некоторых проверок Backbone возвращает объект, но Backbone.history возвращает undefined.
Что может быть причиной этого?
Спасибо
Есть ли у вас маршруты на контроллере? Магистраль создает историю только после того, как задан хотя бы один маршрут.
Подробнее:
TypeError: невозможно вызвать метод 'start' из undefined **
Хм, почему-то Backbone.history undefined, и поэтому нет метод начала на нем. Оказывается, что Backbone.js создает экземпляр of the Backbone.History(верхний регистр 'H), называемый Backbone.history(нижний case 'h) после создания контроллера, который имеет хотя бы один маршрут, указанный на нем. Это имеет смысл, поскольку управление историей требуется, если есть маршруты для ответа.
http://tinnedfruit.com/2011/04/26/testing-backbone-apps-with-jasmine-sinon-3.html
Я попал в ту же ошибку.
Это происходит, если вы не делаете экземпляр маршрутизатора:
var routerInstance = new blogRouter();
Если вы используете CoffeeScript, а ваш маршрутизатор определяется с помощью ключевого слова класса CoffeeScript с помощью метода конструктора, дважды проверьте, что вы вызываете super в определении конструктора. Это решило, что проблема Backbone.history была для меня нулевой.
class AppRouter extends Backbone.Router
constructor: (options) ->
super(options)
# other initialization code
Обязательно включите jQuery.js
перед underscore.js
и backbone.js
в HTML-заголовке.
Я столкнулся с одной и той же проблемой по разным причинам, проведя пару часов, когда понял, что метод в моем маршрутизаторе "route": function() вызывает проблему после того, как я прокомментирую этот ненужный дополнительный метод, history.start() работал как ожидалось.
Аналогичное сообщение об ошибке ".. не запускает метод" start ", если вы пишете Backbone.History.start
вместо Backbone.History.start
(правильный - с нижним регистром h
в history
).
(function($) {
var Demo = Backbone.Router.extend({
routes:{
'*actions':'defaultRoute'
},
defaultRoute:function(action){
alert('xss');
}
});
var demo = new Demo;
Backbone.history.start();
//My site http://bbs.w3hacker.com
})(jQuery);
Также использование старых версий jquery может привести к этому