目录
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护
通俗的说就是:修改data的值
两种表示
第一种:
- //计算属性
- computed: {
- messageComputed: function() {
- console.info("computed");
- var m = this.message;
- for (var i = 0; i < ids.length; i++) {
- m += ids[i];
- }
- return m;
- }
然后直接访问即可
第二种
使用get set 方法 默认是使用get方法的,只有使用
app.messageComputed2 ="admin" 改变的时候才会执行set方法
- //默认是get 的 设置
- //app.messageComputed2 = 'admin' 当进行修改的时候才能调用set的方法
- messageComputed2: {
- get: function() {
- return this.message;
- },
- set: function() {
- var m = this.message;
- for (var i = 0; i < ids.length; i++) {
- m += ids[i];
- }
- this.message = m;
- }
- }
大家可以方法,我么通过methods的方法也可以实现data中数据值的修改,因此为什么要使用计算方法呢?
划重点:计算方法是可以使用缓存的,如果值已经存在,不执行方法直接使用缓存,而方法是不会使用缓存的,每次必须调用方法
- //侦听器
- watch: {
- //key是要监听的属性
- //当message发生变化的时候 ---就会调用
- //参数1 变化后的数据的内容
- //参数2 变化前的数据的内容
- message: function(newVal, oldVal) {
- console.info("message 发生变化了")
- console.info("message的old:" + oldVal)
- console.info("message的new:" + newVal)
- if (newVal == 'hello vue1') {
- this.status = true
- } else {
- this.status = false
- }
- }
- }
这样设置完毕后,当data中的message发生改变的时候就会执行这个方法
{{}} 可以调用一些方法 例如: {{ message.split(' ').reverse().join(' ') }}
但是{{}} 里面写的如果是html标签是无法解析的
这里指定就可以用来解析标签
以为v-开头的指令
相当于 {{}},只能设置文本
如果有html标签的话会被解析
等于js的show()方法 ,将隐藏的对象显示
这个指定可以根据值的不同进行改变 如果为true为显示 false为隐藏
选择结构
一般跟v-if进行配合使用
循环遍历
- <tr v-for="(user,index) in users">
- <td>{{index+1}}td>
- <td>{{user.username}}td>
- <td v-text="user.pwd">td>
- tr>
-
- **
-
-
- for="(item,key) in user">{{key}}:{{item}}
绑定事件
-
- <button v-on:click="num++">{{num}}button>
-
- <button @click="num++">{{num}}button>
-
- <button @click.once="num++">{{num}}button>

- bind:id="user.username">{{num}}
-
- **
-
- "user.username">{{num}}

主键的双向绑定
- DOCTYPE html>
-
-
-
-
-
Document -
-
-
-
{{message}}
-
-
-
{{messageComputed}}
-
{{messageComputed}}
-
-
{{messageMethod()}}
-
{{messageMethod()}}
-
-
{{messageComputed2}}
-
{{divHtml}}
-
-
-
- 看div是否显示
-
if
-
else
-
-
-
-
-
-
序号 -
用户名 -
密码 -
-
-
-
-
{{index+1}} -
{{user.username}} -
-
-
-
-
-
- {{key}}:{{item}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- var ids = [1, 2, 3, 4, 5];
- var app = new Vue({
- el: '#app',
- data: {
- num: 0,
- message: 'hello vue',
- divHtml: '百度',
- status: false,
- users: [{
- username: 'admin',
- pwd: 'pwd'
- }, {
- username: 'admin1',
- pwd: 'pwd1'
- }, {
- username: 'admin2',
- pwd: 'pwd2'
- }, {
- username: 'admin2',
- pwd: 'pwd2'
- }],
- user: {
- username: 'sofwin',
- pwd: 'sofwin',
- age: 18
- }
- },
- methods: {
- messageMethod: function() {
- console.info("method")
- var m = this.message;
- for (var i = 0; i < ids.length; i++) {
- m += ids[i];
- }
- return m;
- }
- },
- //计算属性
- computed: {
- messageComputed: function() {
- console.info("computed");
- var m = this.message;
- for (var i = 0; i < ids.length; i++) {
- m += ids[i];
- }
- return m;
- },
- //默认是get 的 设置
- //app.messageComputed2 = 'admin' 当进行修改的时候才能调用set的方法
- messageComputed2: {
- get: function() {
- return this.message;
- },
- set: function() {
- var m = this.message;
- for (var i = 0; i < ids.length; i++) {
- m += ids[i];
- }
- this.message = m;
- }
- }
- },
- //侦听器
- watch: {
- //key是要监听的属性
- //当message发生变化的时候 ---就会调用
- //参数1 变化后的数据的内容
- //参数2 变化前的数据的内容
- message: function(newVal, oldVal) {
- console.info("message 发生变化了")
- console.info("message的old:" + oldVal)
- console.info("message的new:" + newVal)
- if (newVal == 'hello vue1') {
- this.status = true
- } else {
- this.status = false
- }
- }
- }
- })
- // app.messageComputed2 = 'admin'
-
- //按钮的组件
- const Feature = Vue.component('sofwin-button', {
- //组件中用data 只能是function
- data: function() {
- return {
- count: 0,
- buttonName: 'sofwin'
- }
- },
- template: ''
- })
注意:如果使用的单元程序,需要将定义的组件引入到当前页面中来

- DOCTYPE html>
-
-
-
-
-
Document -
-
-
-
-
-
-
-
-
-
- //按钮的组件
- const Feature = Vue.component('sofwin-button', {
- props: ["testmess"],
- //组件中用data 只能是function
- data: function() {
- return {
- count: 0,
- buttonName: 'sofwin'
- }
- },
- template: ''
- });
-
- //按钮的组件
- const Feature2 = Vue.component('sofwin-button', {
- props: ["testmess"],
- //组件中用data 只能是function
- data: function() {
- return {
- count: 0,
- buttonName: 'sofwin'
- }
- },
- template: ''
- });
- var vm = new Vue({
- el: '#app',
- data: {
- message: 'zzz'
- },
- //局部定义组件
- components: {
- 'com-1': Feature,
- 'com-2': Feature2
- }
- })
-
基于node.js ,安装node.js ,默认会按照npm
安装完毕后测试如下----》就安装成功了

npm install -g @vue/cli

安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的帮助信息,来验证它是否安装成功。
vue -V
首先在一个选定位置创建文件夹 然后进入进窗口输入
- vue create hello-world
- hello-world是项目名---可以随便改
你会被提示选取一个 preset。你可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选“手动选择特性”来选取需要的特性。
也可以选择自定义 就是选择Manually这一行进入

这里我使用的vue2的默认情况

出现后就完成了创建
vue ui

允许后就会自动弹出一个页面

选择目录进行创建
点击下一步


等待即可

修改这个文件
-
-
- // import HelloWorld from './components/HelloWorld.vue'
- export default {
- name: 'App',
- // components: {
- // HelloWorld
- // },
- data: function(){
- return {
- //存放后端请求得到的数据
- users: [],
- isShow: false,
- //用于新增
- user: {}
- }
- },
- methods :{
- toAdd:function(){
- this.isShow=true;
- },
- save:function(){
- console.info(this.user.id)
- // 修改
- if(this.user.id!=undefined){
- console.info("11")
- for(var i=0;i
- var item=this.users[i];
- if(item.id==this.user.id){
- //修改
- this.users[i]=this.user
- }
- }
- }//新增
- else{
- this.users.push(this.user);
- }
- //清空user
- this.user={}
- this.isShow=false
- },
- edit:function(id){
- this.selectById(id);
- this.isShow=true
- },
- //通过id来查找对象
- selectById:function(id){
- for(var i=0;i
- var item=this.users[i];
- if(item.id==id){
- this.user=item;
- }
- }
- },
- remove:function(id){
- for(var i=0;i
- var item=this.users[i];
- if(item.id==id){
- //第一个参数是 删除的索引
- this.users.splice(i,1)
- }
- }
- }
- },
- //在挂载前
- beforeMount: function(){
- //一般这个是发布异步请求得到数组
- var users= [
- {id:1,userName:'admin',password:'123',age:11},
- {id:2,userName:'admin2',password:'123',age:12},
- {id:3,userName:'admin3',password:'123',age:13},
- {id:4,userName:'admin4',password:'123',age:14}
- ]
- this.users=users;
- }
- }
-
- #app {
- font-family: Avenir, Helvetica, Arial, sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- text-align: center;
- color: #2c3e50;
- margin-top: 60px;
- }
-
相关阅读:
仿牛客项目总结
Sleuth+Zipkin 链路追踪
【Shell学习笔记】Bash的模式扩展
HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-GPIO
未来五年,千万不要错过这波红利!
服务器配置openvpn,ssh连接断开
LeetCode 0263. 丑数
display:table 和 grid
基于SpringMVC实现常见功能
Maven - 客户端 Nexus 配置
-
原文地址:https://blog.csdn.net/weixin_52574640/article/details/126640941