Canjs не маршрутизирует

так что эта ошибка убивает меня, так как я понятия не имею, что происходит, я обновил свою версию canjs до последней версии, которая на данный момент 2.0.4 с jquery, и маршрутизатор перестал работать. Ничего не маршрутизирует, я пробую с window.location.hash и can.route.attr и не маршрутизирую. Меня смущает то, что со старой версией у меня все работало отлично. Вот код

var Router = can.Control({
    'init': function() {
    },
    'route' : function(){
        window.location.hash = '#!dashboard';
    },
    'dashboard route': function() {
        console.log('dashboard')
    }
});

$(document).ready(function() {
    can.route.ready(false);
    new Router($('body'));
    can.route.ready(true);
});

person rdk1992    schedule 05.02.2014    source источник
comment
Чтобы добавить к правильному ответу @air_hadoken, это должно быть единственным серьезным критическим изменением при обновлении формы 1.1.x до 2.0.x: canjs.com/guides/migrating.html   -  person Daff    schedule 06.02.2014


Ответы (1)


К вашему сведению, последняя версия CanJS — 2.0.5, выпущенная вчера.

can.route.ready() работает не так, как раньше. can.route.ready(true) на самом деле ничего не делает, чтобы предотвратить множественные настройки маршрута в устаревшем коде. Это отчасти объясняет, почему ваш код не инициализирует этот первый переход к #!dashboard, поскольку вам нужно будет инициализировать контроллер маршрутизатора перед вызовом ready.

Лучше убрать первый вызов ready и вынуть аргумент из второго. У меня есть демонстрация этого на http://jsfiddle.net/air_hadoken/5maLu/1/ -- нажмите «Выполнить», и вы увидите свидетельство срабатывания каждого прослушивателя маршрута в вашем контроллере.

person air_hadoken    schedule 05.02.2014
comment
спасибо, это сработало. Теперь я загрузил последнюю версию с их веб-сайта, и она все еще не работала, я скачал ту, что у вас на скрипке, и она сработала! Большое спасибо, мне нужно было обновить, так как двусторонняя привязка — это функция, которую я должен использовать сейчас: D. - person rdk1992; 07.02.2014