vue.js - Vue:嵌套条件模板,它们可以工作,但它是最佳实践吗?
问题描述
我试图搜索和抓取所有文档但没有成功。我是 vue.js 的新手,但不是 JS 的新手。作为学习教程,我正在将我的一些旧代码从 vanilla/jquery 转换为 vue.js。我现在面临的挑战是嵌套条件模板。
我有这个基本形式,我只想在满足某些条件时展示它的一部分。我发现的第一个解决方案是嵌套条件模板,它实际上就像一个魅力,但我想知道我是否以正确的方式做这件事。
我从片段中删除了所有不必要的东西(引导程序,...)
来自终身 Vue 开发者的任何建议?非常感谢
var form_one = new Vue({
el: '#app',
data: {
errors: [],
type: "default",
mainFormToggle: null,
wasMeeting: "default",
},
methods: {
preCheck: function (e) {
this.errors = []; // removes any errors eventually shown in the page
if (this.type) {
this.mainFormToggle = true;
}
if (!this.type) {
this.errors.push('Please select a course type!');
this.mainFormToggle = false;
}
}
}
});
<div id="app">
<select class="form-control" id="type" v-model="type" @change="preCheck()" name="type">
<option value="default" disabled selected>Choose the correct type to be initiated</option>
<option value="one">one</option>
<option value="two">two</option>
</select>
<!-- FIRST CONDITIONAL "ROOT" TEMPLATE -->
<template id="form-two" v-if="mainFormToggle">
<div><label for="firstName">First Name</label>
<input type="text" class="form-control form-control-sm" id="firstName" v-model="firstName"></div>
<!-- FISRT NESTED CONDITIONAL TEMPLATE -->
<template v-if="type === 'one'">
<div> <label for="wasMeeting">Was a meeting held?</label>
<select class="form-control" id="wasMeeting" v-model="wasMeeting">
<option value="default" disabled selected>Choose an option</option>
<option value="y">Yes</option>
<option vlaue="n">No</option>
</select></div>
<!-- SECOND CONDITIONAL NESTED TEMPLATE -->
<template v-if="wasMeeting === 'y'">
<div> <label for="meeting-by-who">By which teacher was the Meeting held?</label>
<textarea class="form-control form-control-sm" id="meeting-by-who" placeholder=""
rows="5"></textarea></div>
</template>
</template>
</template>
</div>
解决方案
推荐阅读
- openlayers - 在 OpenLayers 5 中向地图添加功能
- php - 如何将 file_get_contents 与代理一起使用?
- c# - Autofac 在线路服务端的每个 DataContract 中注入 NLog 实例
- angular - Angular 5 localize-router 使用国家/语言代码设置路由
- command-line - Grunt exec - Gzip 目录中所有缩小的 css 和 js 文件
- android - 单击设备/手机的后退按钮时如何同时隐藏键盘和按钮
- c# - 与依赖项共享库
- angularjs - AngularJS $rootScope.$broadcast
- angular - 如何预选自动完成?
- performance - 一个程序如何同时为多个用户提供服务?