路由器视图内容无法呈现

时间:2017-06-08 08:52:13

标签: javascript node.js vue.js vuejs2 vue-router

我的应用的router-view内容始终保持为空(<!---->),即使路由本身运行正常,并且整个应用中都能正确呈现模板。

(注意:即使只有import Vue from 'vue';,我也会使用带有编译支持的独立版Vue.js。正确的导入会被webpack取代。)

main.ts

import Vue from 'vue';
import Router from './services/router';
import { AppComponent } from './components/';

export default new Vue({
  el: '#app-container',
  router: Router,
  render: (context) => context(AppComponent)
});

main.template.pug(摘录)

body
  #app-container

app.ts(摘录)

@Component({
  template: require('./app.template.pug'),
  components: {
    'app-header': HeaderComponent,
    ...
  }
})
export class AppComponent extends Vue {

}

app.template.pug

.app
  app-header
  .app-body
    app-sidebar
    main.app-content
      app-breadcrumb(:list='list')
      .container-fluid
        router-view
    app-aside
  app-footer

services / router / index.ts(摘录)

import Router from 'vue-router';
import { DashboardComponent } from '../../components/pages/dashboard';

Vue.use(Router);

export default new Router({
  mode: 'history',
  linkActiveClass: 'open active',
  routes: [
    {
      path: '/',
      redirect: '/dashboard',
      name: 'Home',
      children: [
        {
          path: 'dashboard',
          name: 'Dashboard',
          component: DashboardComponent
        }
      ]
    }
  ]
});

3 个答案:

答案 0 :(得分:4)

好吧,我自己弄清楚了。好像vue-router中的每个路径定义都需要一个组件。所以它正确地路由到DashboardComponent,但没有任何东西呈现在它的父母身上。我为父母提供了一个简单的虚拟组件,只有一个router-view的模板,它开始工作。

答案 1 :(得分:2)

是的.. Home路线没有组件...... 你可以这样做:

routes: [
    {
      path: '/',
      redirect: '/dashboard',
      name: 'Home',
      component: {
          template: '<router-view/>',
      },
      children: [
        {
          path: 'dashboard',
          name: 'Dashboard',
          component: DashboardComponent
        }
      ]
    }
  ]

答案 2 :(得分:0)

其他方式 - 只需将模板添加到父级

$('.slider').slick({
    dots: false,
    infinite: true,
    speed: 500,
    arrows: false,
    lazyLoad: 'ondemand',
    autoplay: true,
    autoplaySpeed: 4000
});