Vue 路由器。绑定数据

sno*_*wil 6 javascript bind vue.js vue-router

我正在开发 vue 应用程序,现在我应该使用 vue 路由器了。但是我在将数据绑定到路由器模板时遇到了一些问题。

请帮我。

HTML:

<div id="app">
  <h1>Hello App!</h1>
  <p>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <router-view></router-view>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本:

const Foo = { template: '<div>{{foo}}</div>' }
const Bar = { template: '<div>bar</div>' }


const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

const router = new VueRouter({
  routes
})


const app = new Vue({
el: '#app',
  router,
  data: function(){
    return {foo: "asdasdas"}
  }
})
Run Code Online (Sandbox Code Playgroud)

{{foo}}绑定不起作用。

实例: https: //jsfiddle.net/xgrjzsup/4430/

nik*_*shr 5

来自组件指南

\n
\n

每个组件实例都有其自己的隔离范围。这意味着您\n不能(也不应该)直接引用子\n组件\xe2\x80\x99s 模板中的父数据。可以使用 props 将数据\n传递到子组件。

\n
\n

Foo通过路由器设置的应用程序的子组件。

\n

将数据从父级传递给子级的一种方法是使用 props。

\n

修改您的Foo定义以接受foo属性:

\n
const Foo = { \n    props: [\'foo\'],\n    template: \'<div>{{foo}}</div>\' \n}\n
Run Code Online (Sandbox Code Playgroud)\n

并在模板中绑定父属性

\n
<router-view :foo="foo"></router-view>\n
Run Code Online (Sandbox Code Playgroud)\n

更新的小提琴:https://jsfiddle.net/xgrjzsup/4431/

\n


Ser*_*nov 0

在您的情况下,有两种方法可以访问该“foo”变量。

{{$parent.foo}}
{{$root.foo}}
Run Code Online (Sandbox Code Playgroud)

但考虑使用 Vuex 在应用程序中共享数据 - https://github.com/vuejs/vuex 或者将 foo 作为参数传递给路由 - https://router.vuejs.org/en/essentials/passing-props .html