javascript - 在 VueJS 中使用“道具”的正确方法
问题描述
我第一次使用 VueJS 创建一个新项目,并尝试在我的所有页面上使用工具栏。但我想让工具栏中的标题动态显示。我尝试使用道具,但我使用它的方式一定是错误的。检查下面的示例:
在我的 index.html 中:
<div id="app" v-cloak>
<v-app>
<spa-toolbar :title="title"></spa-toolbar>
<router-view></router-view>
</v-app>
</div>
<script>
Vue.use(VueRouter);
Vue.use(VeeValidate);
Vue.config.devtools = true;
const routes = [
{
path: '/',
component: spaLogin,
props: {title: 'Connexion'}
},
{
path: '/parametres',
name : 'parametres',
component: spaParametres,
props: {title: 'Paramètres'}
},
];
let router = new VueRouter({
hashbang: false,
routes
});
router.beforeEach((to, from, next) => {
next();
});
var app = new Vue({
el: '#app',
watch: {},
data: {
title: 'Connexion',
},
router
});
</script>
toolbar.vue.js(带有“道具:[”标题“]):
<v-toolbar-title class="white--text">{{title}}</v-toolbar-title>
在另一个页面“parametres.vue.js”中,我使用了道具[“title”],但标题的值始终是“Connexion”,这是我在 index.html 中的主应用程序中定义的值。
如何使这个值动态化?认为通过路由器将其传递会很棒...
谢谢 !
解决方案
您正在将属性title
从v-app
组件传递给spa-toolbar
组件。然后,您在路由上设置一个属性,该属性也称为title
.
这两者没有任何关系。title
路由中的prop 也传递给 中的组件router-view
,即spaLogin
和spaParametre
。
所以我认为更好的方法是meta
在路线上定义一个字段:
<div id="app" v-cloak>
<v-app>
<spa-toolbar :title="(($route.matched[0] || {}).meta || {}).title"></spa-toolbar>
<router-view></router-view>
</v-app>
</div>
<script>
Vue.use(VueRouter);
Vue.use(VeeValidate);
Vue.config.devtools = true;
const routes = [
{
path: '/',
component: spaLogin,
meta: {title: 'Connexion'}
},
{
path: '/parametres',
name : 'parametres',
component: spaParametres,
meta: {title: 'Paramètres'}
},
];
let router = new VueRouter({
hashbang: false,
routes
});
var app = new Vue({
el: '#app',
data: {},
router
});
</script>
推荐阅读
- armeria - 如何调用多个服务?
- python - 带有存储触发器的谷歌云函数 python37 不会部署,也不会提供任何日志
- ios - 为什么在sceneView中physicsBody比视觉模型大?
- java - 什么是 RSA 加密中的“连接到系统的设备无法运行”错误?
- angular - 角度路由器:命名的出口似乎不适用于相对路由,也不适用于延迟加载的模块
- android - 通过 Android Studio 发送 shell 命令或类似于正在运行的 android 应用程序的东西
- r - 无法下载有关 rsconnect 的报告
- java - java 8将多个键映射到相同的值
- java - 这样声明的数组在哪里 int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }; 在java中得到存储?
- c++ - 什么是 C++17 中 std::unary_function 的等效替代品?