我正在开发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>
脚本:
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"}
}
})
{{foo}}
绑定无法正常工作。
答案 0 :(得分:2)
每个组件实例都有自己独立的范围。这意味着你 不能(也不应该)直接引用孩子的父数据 组件的模板。数据可以传递给子组件 使用道具。
和Foo
是您通过路由器设置的应用程序的子组件。
将数据从父级传递给子级的一种方法是使用道具。
修改您的Foo
定义以接受foo
属性:
const Foo = {
props: ['foo'],
template: '<div>{{foo}}</div>'
}
并绑定模板中的父属性
<router-view :foo="foo"></router-view>
答案 1 :(得分:0)
Ofc它不起作用。你必须在你使用的模板上设置数据。
在你的情况下:
const Foo = {
template: '<div>{{foo}}</div>',
data () {
return {
foo: 'magic'
}
}
}
欢呼和快乐的编码。
答案 2 :(得分:-1)
在您的情况下,有两种方法可以访问“foo”var。
{{$parent.foo}}
{{$root.foo}}
但请考虑使用Vuex在您的应用中共享数据 - https://github.com/vuejs/vuex 或者将foo作为参数传递给路线 - https://router.vuejs.org/en/essentials/passing-props.html