Parasails.js и использование (Vue Router или virtualPages) - PullRequest
0 голосов
/ 13 октября 2018

Документация Parasails.js упоминает, что он поддерживает router и virtualPages, но на самом деле не указывает, как взаимодействовать с этими параметрами.

Я несколько привык кобычная настройка Vue для импорта Vue, VueRouter и каждого отдельного компонента непосредственно в файл .vue.

Но с parasails.js я чувствую, что эти параметры ожидают объекты, которые не определены в документации, поэтому я просто догадываюсь на этом.

Я дошел до этой точкипока что:

parasails.registerComponent('mainSearch', {      
  props: [
    'prop1',
    'prop2',
  ],

  html5HistoryMode: 'history',
  virtualPages: [
    { path: '/foo', component: 'page2' },
  ],

  template: `
    <div class="test">
       <p>Test</p>
       <router-link to="/foo">Foo</router-link>
       <router-view />
    </div>
  `,

  beforeMount: function() {
    //…
    // Attach any initial data from the server.
    _.extend(this, SAILS_LOCALS);

  },
  mounted: async function(){
    //…
  },
  beforeDestroy: function() {
    //…
  },
});

Но я получаю сообщение об ошибке:

TypeError: In the HTML template (during render): Cannot read property 'matched' of undefined

Кто-нибудь успешно использовал router или virtualPages в parasails.js иможете мне помочь?

Кроме того, мой следующий вопрос: при передаче компонентов в virtualPages я просто предоставляю имя другого зарегистрированного компонента parasails в виде строки?Или я должен включить этот компонент в код и передать его как объект, как это было бы в VueRouter?

Спасибо за любую помощь!

EDIT Использование virtualPages для компонента parasails, очевидно, не будет работать.

Но добавление этих свойств на страницу парасейла, по-видимому, является целевым назначением:

  virtualPages: true,
  html5HistoryMode: 'history',
  virtualPageSlug: undefined,
  virtualPagesRegExp: /^\/test\/?([^\/]+)?/,

Теперь, хотя я больше не получаю ошибок, элемент <router-view></router-view> не заполняетсяправильное представление при щелчке <router-link to="/test/foo/">Foo</router-link> на странице.

Я добавил следующий маршрут к проекту

  '/test/foo/' : {
    view: 'pages/test'
  },

Любые подсказки о том, почему мой вид маршрутизатора не отображаетсяправильно обновлен?

Я думаю, что эта документация требует серьезных обновлений, так как на каждом шагу это просто игра в догадки.

1 Ответ

0 голосов
/ 15 октября 2018

Вы правы, эта ссылка, которую вы указали, не содержит информации о настройке виртуальных страниц.Я не знаю много об использовании только parasails, но в Sails v1 именно так я устанавливаю виртуальные страницы.(Я использую это главным образом для создания модальных ссылок).

В вашем скрипте страницы вы определяете свои данные:

virtualPages: true, html5HistoryMode: 'history', virtualPageSlug: undefined, virtualPagesRegExp: /^\/foo\/bar\/?([^\/]+)?/,

В своем файле ejs вы можете добавить это вdiv упаковки:

v-if="virtualPageSlug === 'new'"

Файл маршрутов:

'GET /foo/bar/:virtualPageSlug?': { action: 'foo/view-bar' },

...