Доступ к объекту маршрутизатора из дочернего компонента (constroller / viewmodel) в Aurelia - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в Aurelia (но старый в Angular) и пытаюсь реализовать конфигурацию маршрутизации в моем первом приложении.Я настроил маршрут в app.js следующим образом:

configureRouter(config, router) {
    RoutingHelper.exerciseOneRouteConfig(this, config, router);
  }

, а вспомогательная функция записана в отдельном файле:

routing_helper.js

import {
  PLATFORM
} from 'aurelia-pal';

export class RoutingHelper {
  static exerciseOneRouteConfig(self, config, router) {
    self.router = router;
    config.title = 'تمرین ۱';
    config.map([{
        route: ['', 'home'],
        name: 'home',
        moduleId: PLATFORM.moduleName('app/index'),
        title: 'خانه',
        nav: true
      },
      {
        route: ['account'],
        name: 'account',
        moduleId: PLATFORM.moduleName('app/account/index'),
        title: 'حساب کاربری',
        nav: true
      },
      {
        route: ['profile'],
        name: 'profile',
        moduleId: PLATFORM.moduleName('app/account/profile/index'),
        title: 'پروفایل کاربر',
        nav: false
      },
      {
        route: ['signup'],
        name: 'signup',
        moduleId: PLATFORM.moduleName('app/account/signup/index'),
        title: 'ثبت نام',
        nav: false
      },
      {
        route: ['signin'],
        name: 'signin',
        moduleId: PLATFORM.moduleName('app/account/signin/index'),
        title: 'ورود کاربر',
        nav: false
      },
      {
        route: ['changepass'],
        name: 'changepass',
        moduleId: PLATFORM.moduleName('app/account/signin/changepass'),
        title: 'تغییر کلمه عبور',
        nav: false
      },
    ]);
  }
}

Теперь в модуле доступа я могу получить доступ к объекту маршрутизатора, а в его html я могу выполнять навигацию и печатать модель навигации.

В дочерних компонентах (других страницах) использование директив html работает нормально, но объект маршрутизатора недоступен из ихJS файлы.Например, в «app / account / signin / index.js» я хочу использовать эту функцию:

this.router.navigateToRoute('profile');

, но маршрутизатор не определен для этого.

1 Ответ

0 голосов
/ 01 декабря 2018

Я разобрался.Объект маршрутизатора используется совместно с DI aurelia.Поэтому в любом компоненте мне сначала нужно было импортировать Router:

...
import {
  Router
} from 'aurelia-router';
...

, затем вставить его в компонент:

...
@inject(Router)
...
constructor(router){
  this.router = router;
}
...

и, наконец, использовать его в любом месте компонента:

this.router.navigateToRoute('profile');

надеюсь, что этот ответ поможет и другим.TG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...