vue学习(二)表单渲染

表单渲染可以分为条件渲染,列表渲染,事件处理,表单输入绑定。

1.条件渲染

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染。

<body>
		<div id="test">
			<button id="aaa" v-if="msg">显示</button>
			<button id="aaa" v-else="msg">不显示</button>
			
			<button v-if="num > 5">大于5</button>
			<button v-else-if="num == 5">等于5</button>
			<button v-else>小于5</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				msg:false,
				num:5
			}
		})
	</script>

v-show指令:

<body>
		<div id="test">
			<button id="aaa" v-show="msg">显示</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				msg:true
			}
		})
	</script>

v-show和v-if的区别:

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

2.列表渲染

我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="item in items">
				   {{ item.message }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				items: [
			      { message: 'Foo' },
			      { message: 'Bar' }
			    ]
			}
		})
	</script>

在 v-for 块中,我们可以访问所有父作用域的属性。v-for 还支持一个可选的第二个参数,即当前项的索引。

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="(item,index) in items">
				   {{ parentMessage }} - {{ index }} - {{ item.message }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				parentMessage: 'Parent',
				items: [
			      { message: 'Foo' },
			      { message: 'Bar' }
			    ]
			}
		})
	</script>

在 v-for 里使用对象

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="(value,name,index) in object">
				  {{index}}:{{name}} {{ value }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				object: {
			      title: 'How to do lists in Vue',
			      author: 'Jane Doe',
			      publishedAt: '2016-04-10'
			    }
			}
		})
	</script>

3.事件处理

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

<body>
		<div id="test">
			<button v-on:click="counter += 1">Add 1</button>
  			<p>The button above has been clicked {{ counter }} times.</p>
  			<button @click="greet('test')">Greet</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				counter:0
			},
			methods:{
				greet:function(msg){
					alert(msg)
				}
			}
		})
	</script>

2.1.4新增事件,点击只会触发一次

<a v-on:click.once="doThis"></a>

按键修饰符

<input v-on:keyup.enter="submit">只有当点击enter按钮时,才会触发。

按键码:

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
     

需要注意的是keyup事件必须为input

<body>
		<div id="test">
			<button v-on:click="counter += 1">Add 1</button>
  			<p>The button above has been clicked {{ counter }} times.</p>
  			<button @click="greet('test')">Greet</button>
  			
  			<a v-on:click.once="doThis">一次</a>
  			<input v-on:keyup.113="ceshi">按键码</input>
		</div> 
	</body>
	
	<script>
		/*Vue.config.keyCodes.f2 = 113;*/
		var app = new Vue({
			el: '#test',
			data:{
				counter:0
			},
			methods:{
				greet:function(msg){
					alert(msg)
				},
				doThis:function(){
					alert(111)
				},
				ceshi:function(){
					alert("F1")
				}
			}
		})
	</script>

4.表单输入绑定

你可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定

<body>
		<div id="test">  			
  			<input v-model="msg" placeholder="edit me">
			<p>Message is: {{ msg }}</p>
		</div> 
	</body>
	
	<script>
		
		var app = new Vue({
			el: '#test',
			data:{
				counter:0,
				msg:""
			},
		})
	</script>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue表单弹窗服务端渲染,需要注意以下几点: 1.使用Vue SSR(服务端渲染)来渲染模板,这样可以在服务端将Vue组件渲染成HTML字符串,然后将其发送到浏览器。 2.在应用程序中使用Vue的客户端和服务端代码,并确保组件在两个环境中都可以运行。这意味着您需要将所有组件的依赖项作为外部资源加载到HTML中。 3.在服务端使用Node.js来构建应用程序,使用Express或Koa等框架来处理HTTP请求和响应。 4.在客户端使用Vue.js来处理用户交互和动态渲染。 下面是一个简单的示例代码,以Vue.js和Node.js为例: 首先,我们需要安装Vue.js和Vue Server Renderer: ``` npm install vue vue-server-renderer --save ``` 接下来,我们需要创建一个Vue组件来表示表单弹窗: ```vue <template> <div class="dialog-box" v-if="show"> <div class="dialog"> <h3>{{ title }}</h3> <form @submit.prevent="submit"> <div class="form-group"> <label for="username">Username</label> <input type="text" id="username" v-model="username"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" id="password" v-model="password"> </div> <button type="submit">Submit</button> </form> </div> </div> </template> <script> export default { data() { return { show: false, title: 'Login', username: '', password: '' } }, methods: { submit() { // handle form submission } } } </script> ``` 然后,我们需要创建一个服务器端渲染的入口文件: ```js const Vue = require('vue') const serverRenderer = require('vue-server-renderer').createRenderer() const express = require('express') const app = express() const App = require('./App.vue') app.get('*', (req, res) => { const vm = new Vue({ render: h => h(App) }) serverRenderer.renderToString(vm, (err, html) => { if (err) { res.status(500).send('Server Error') } else { res.send(` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue Form Dialog SSR</title> <script src="/bundle.js"></script> </head> <body> ${html} </body> </html> `) } }) }) app.listen(3000, () => { console.log(`Server started at http://localhost:3000`) }) ``` 在这个文件中,我们首先引入了VueVue Server Renderer和Express。然后,我们创建了一个Express应用程序,并为所有路由配置了一个基本的处理程序。在处理程序中,我们创建了一个Vue实例,并使用Vue Server Renderer将其渲染为HTML字符串。最后,我们将HTML字符串包装在一个完整的HTML模板中,其中包含对我们应用程序的客户端代码的引用。 最后,我们需要创建一个客户端入口文件,该文件将启动Vue应用程序并挂载它到DOM中: ```js import Vue from 'vue' import App from './App.vue' new Vue({ render: h => h(App) }).$mount('#app') ``` 这里的代码很简单,我们只是从Vue导入Vue和我们的App组件,并创建了一个Vue实例,并使用它将我们的应用程序挂载到DOM中。 现在,我们可以使用以下命令来启动我们的应用程序: ``` node server.js ``` 这将启动我们的应用程序,并将其监听在端口3000上。要在浏览器中查看它,请导航到http://localhost:3000。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值