Ember: разрешение объектов вложенных ресурсов

Я недавно начал использовать Ember.js с Ember-CLI, и я очень взволнован. Но есть некоторые вещи, которые мне не понятны.

Вот мой роутер:

this.resource("authenticated", { path: '/' }, function() {
  this.resource("contacts", function() {
    this.resource("contact", { path: ':id' });
  });

  this.resource("chats", function() {
    this.resource("chat", { path: ':id' });
  });

  this.resource("settings", function() {
    this.resource("setting", { path: ':id' });
  });
});

Вопрос в том, почему после 2-го вложения "resolver" начинает находить объекты вне ресурса "authenticated"?

Например

my-app/pods/chats/index/view

Но ожидаемое my-app/pods/authenticated/chats/index/view

Почему пропущена проверка подлинности?

1 ответ

Ваш аутентифицированный маршрут не применяется в URL, потому что вы назначили его URL для корня: { path: '/'},

Вы должны либо изменить путь на "authenticated", либо удалить его все вместе:

this.resource("authenticated", function() { ... });

Однако теперь проверка подлинности выполняется только тогда, когда пользователь переходит к my-app/pods/authenticated, Если вы все еще хотите сделать аутентифицированным индекс, вы должны добавить префикс к вложенным ресурсам:

this.resource("authenticated", { path: '/' }, function() {
    this.resource("contacts", { path: '/authenticated/contacts' }, function() {
        ...
    });

    this.resource("chats", , { path: '/authenticated/chats' }, function() {
        ...
    });

    ...
});

Я надеюсь, что это помогло вам.

Другие вопросы по тегам