Маршрутизация в Ember.js

Я пытаюсь использовать маршрутизацию в Ember.js, но, похоже, она работает неправильно.

Полный код находится здесь, на Github, но часть приведена ниже:

define(['ember', 'app/controllers/controller', 'app/views/view'], function (ember, controller, view) {
    var Router = Ember.Router.extend({
        root: Ember.State.extend({
            index: Ember.State.extend({
                // location: Ember.Location.create({style: 'hash'}),
                location: 'hash',
                enableLogging: true,
                route: '/',
                redirectsTo: 'news.index'
            }),
            news: Ember.State.extend({
                route: '/news',
                // showPost : Ember.State.transitionTo('post'),
                test: Ember.ViewState.extend({
                    route: '/test',
                    view: view.appendTo('body')
                }),
                index: Ember.ViewState.extend({
                    route: '/',
                    view: null
                })
            })
        })
    });
    var router = Router.create({});
    return router;
});

person bao    schedule 21.06.2012    source источник
comment
Какая у вас ошибка? Маршруты не соблюдаются должным образом? Пожалуйста, дайте еще выход   -  person nembleton    schedule 21.06.2012


Ответы (1)


Я думаю, вам нужно изменить свой код на это:

define(['ember', 'app/controllers/controller', 'app/views/view'], function (ember, controller, view) {
    var Router = Ember.Router.extend({
        // These are properties of Ember.Router and should be defined here
        location: 'hash',
        enableLogging: true,

        root: Ember.State.extend({
            index: Ember.State.extend({
                route: '/',
                redirectsTo: 'news.index'
            }),
            news: Ember.State.extend({
                route: '/news',
                // showPost : Ember.State.transitionTo('post'),
                test: Ember.ViewState.extend({
                    route: '/test',
                    view: view.appendTo('body')
                }),
                index: Ember.ViewState.extend({
                    route: '/',
                    view: null
                })
            })
        })
    });
    var router = Router.create({});
    return router;
});

Дай мне знать, если это работает.

Обновить

На самом деле вы также не должны использовать ViewState. Он обесценивается. Следуйте инструкциям http://emberjs.com/guides/outlets/.

person Roy Daniels    schedule 21.06.2012
comment
Эй, Рой, спасибо за ответ. На самом деле я понял, почему это не сработало. Я внес некоторые изменения в маршрутизатор, и теперь он работает. Вы правы, я не должен больше использовать Viewstate и вместо этого использовать Ember.Route (с последним Ember.js). вы можете посмотреть на github.com/baothy/amberEx1 - person bao; 22.06.2012