VUE基础、表达式和指令

1、Vue实例挂载(el)的标签

每个Vue实例通过el配置挂载的标签,该标签可以通过id或者是class挂载。 实例上的属性和方法只能够在当前实例挂载的标签中使用。

<div id="app">
	<h1>{{message}}</h1>
</div>
<div class="vueClz">
	<h1>{{message}}</h1>
</div>

/* 
使用构造函数创建一个vue对象:
这个对象作用与哪一个html标签,是通过el属性来挂载的,常用的有id和class挂载方式:
id挂载:el:"#id"
class挂载:el:".class"
 */
//id挂载方式:
var app = new Vue({
	el : "#app",
	data : {
		message : "我是id挂载方式"
	}
});
//class挂载方式:
var app2 = new Vue({
	el : ".vueClz",
	data : {
		message : "我是class挂载方式"
	}
});
2、Vue中的数据(data)详解
  • Vue实例的数据保存在配置属性data中, data自身也是一个对象.
  • 通过Vue实例直接访问和修改data对象中的数据,及时同步的页面上
<div id="app">
	<h1>{{message}}</h1>
	<h1>
		{{user.name}},今年才:{{user.age}}岁.{{user.color}}<font color="pink">是一个很美丽的颜色</font></br>
	</h1>
</div>s

//vue的数据绑定在data属性上,data本身也是一个对象
var app = new Vue({
	el : "#app",
	data : {
		message : "我是一个很单纯的p",
		user : {
			name : "隔壁老王",
			age : 17,
			color : "pink"
		}
	}
});
//Vue实例的数据保存在配置属性data中, data自身也是一个对象.
// 通过Vue实例直接访问data对象中的数据,及时同步的页面上
alert(app.message);
// // 通过Vue实例直接修改data对象中的数据,及时同步的页面上
app.message="p被修改了--》pp";
app.user.name="老刘";
3、Vue中的方法(methods)详解
  • Vue实例的方法保存在配置属性methods中,methods自身也是一个对象. 该对象中值都是方法体
  • 方法都是被Vue对象调用,所以方法中的this代表Vue对象
3.1、使用方式
  • 直接在html模板标签中调用
  • 3.1.2、通过Vue对象实例调用方法
div id="app">
	方法的调用②直接在html模板标签中调用:
	{{say()}}
</div>

//vue的数据绑定在data属性上,data本身也是一个对象
//方法的定义在:methods属性上,通过json格式来表示
var app = new Vue({
	el : "#app",
	data : {
		message : "我是一个很单纯的p",
		user : {
			name : "隔壁老文",
			age : 17,
			color : "pink"
		}
	},
	methods:{
		say:function(){
			//this指向当前对象,当前app对象
			return "hello:"+this.user.name+"!";
		},
		swim:function(){
			console.debug("小狗的游泳姿势,还不错。。。");
		}
	}
});
//方法调用①:通过Vue对象实例调用方法
app.swim();

4、Vue.JS表达式

  • VueJS表达式写在双大括号内:{{ expression }}。
  • VueJS表达式把数据绑定到 HTML。
  • VueJS将在表达式书写的位置"输出"数据。
  • VueJS表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。
    实例: {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}。
4.1 简单表达式

在{{ }}中可以进行简单的运算.

<div id="app">
	<!--简单表达式  -->
	<h1>{{5+5}}</h1>
	<!-- +:运算,字符串连接 -->
	<h1>{{5+"v5"}}</h1>
	<h1>{{5+"5"}}</h1>
	<!-- -:减法 -->
	<h1>{{"5"-"5"}}</h1>
	<h1>{{5*5}}</h1>
	<!-- *:乘 -->
	<h1>{{"5"*"5"}}</h1>
	<!-- / 除-->
	<h1>{{5/5}}</h1>
	<h1>{{5/5}}</h1>
 </div>


var app = new Vue({
  //挂载到id=app元素上
  el:"#app"
4.2 三目运算符
  • 在{{}}中的表达式可以使用data中数据
  • 在{{}}中的表达式可以使用三元运算符,但是不能够使用其他语句
<div id="app">
	<!--三目运算  -->
	{{ show1?"真":"假"}}
</div>

var app = new Vue({
	el : "#app",
	data : {
		show1 : true
	}
});
4.3 字符串操作
  • 直接使用字符串字面值作为字符串对象
  • 使用data中的字符串对象
<div id="app">
    {{"这是字面值"}}<br/>
    {{"这是字面值".length}}<br/>
    {{message.length}}<br/>
    {{message.substring(1,5)}}<br/>
    {{message.substring(2,6).toUpperCase()}}<br/>
</div>


var app = new Vue({
	el: "#app",
	data: {
		message: "这是data中的数据"
	}
});
4.4 对象操作
  • 在表达式中可以使用data中定义的对象的各种用法.像使用js对象中的方法和属性一样
<div id="app">
    {{user}}<br/>
    {{JSON.stringify(user)}}<br/>
    {{user.toString()}}<br/>
    {{user.name}}<br/>
    {{user.age}}<br/>
    {{user.getAge()}}<br/>
</div>

var user = {
	name: "张三",
	age: 29,
	getAge: function () {
		return this.age
	},
	toString:function(){
		return "姓名:"+this.name+",年龄:"+this.age;
	}
};
var app = new Vue({
	el: "#app",
	data: {
		user: user
	}
});
4.5 数组操作
  • 在表达式中可以使用JavaScript数组中的任何语法来操作数组.
<div id="app">
    {{hobbys}}<br/>
    {{hobbys[0]}}<br/>
    {{hobbys.length}}<br/>
    {{hobbys.toString()}}<br/>
    {{hobbys.join("------")}}<br/>
</div>

var app = new Vue({
	el: "#app",
	data: {
		hobbys:["打游戏","踢足球",'泡MM',"泡GG"]
	}
});

5 Vue指令

Vue指令是一个带有v-前缀的特殊标签属性, 指令属性的值预期是单个JavaScript表达式.

5.1 v-text
  • 语法:
    <标签名 v-text=“表达式”></标签名>

  • 作用:
    通过data中的数据更新标签标签中的textContent属性的值.(标签中的文本内容)

  • 注意事项:
    如果值是html的值,会作为普通的文本使用。
    标签中的属性值必须是data中的一个属性.

<div id="app">
    <span v-text="message"></span><br/>
    <span v-text="user.username"></span><br/>
</div>
5.2 v-html
  • 语法:
    <标签名 v-html=“表达式”></标签名>

  • 作用:
    通过data中的数据更新标签标签中的innerHTML属性的值.(标签中的HTML内容)

  • 注意事项:
    如果值是html的值,不会作为普通的文本使用,要识别html标签。
    {{表达式}} 可以插入的标签的内容中
    v-text和v-html更改标签中的所有内容

<div id="app">
    <div v-html="message"></div>
</div>

var app = new Vue({
	el: "#app",
	data: {
		message: "<h1>这是HTMl代码</h1>"
	}
});
5.3 v-for
  • 语法:

    • <标签 v-for=“元素 in 数据源”></标签>

      数据源: 数组,
      元素: 数组中的一个元素,

      数据源: 对象
      元素: 对象中的一个属性名

    • <标签 v-for="(元素,索引|键) in 数据源"></标签>
      当数据源是数组时, ()的第二个参数值索引
      当数据源是对象时, ()的第二个参数值键

    • <标签 v-for="(元素,键,索引) in 对象"></标签>

  • 作用:
    基于数据源多次循环达到多次渲染当前元素.

<div id="app">
    <h1>循环数组</h1>
    <ul>
        <li v-for="hobby in hobbys">{{hobby}}</li>
    </ul>
    <h1>遍历对象</h1>
    <ul>
        <li v-for="value in student">{{value}}</li>
    </ul>

    <h1>带索引循环数组</h1>
    <ul>
        <li v-for="(hobby,index) in hobbys">{{index}}--{{hobby}}</li>
    </ul>
    <h1>带键遍历对象</h1>
    <ul>
        <li v-for="(value,key,index) in student">{{index+1}}---{{key}}--{{value}}</li>
    </ul>
</div>
5.4 v-bind
  • 语法:
    为一个标签属性绑定一个值
    <标签 v-bind:标签属性名字=“表达式”></标签>
    简写形式:
    <标签 :标签属性名字=“表达式”></标签>
    为一个标签绑定一个对象作为该标签的多个属性
    <标签 v-bind=“对象”></标签>

  • 注意事项
    将一个对象键和值作为标签的属性的名字和值时, 在v-bind后不需要指定属性的名字

<div id="app">
    <img v-bind:src="imgsrc" v-bind:title = "title"/>
    <img :src="imgsrc" :title = "title"/>
    <input v-bind="props"/>
</div>

var app = new Vue({
	el: "#app",
	data: {
		imgsrc: "./img/1.jpg",
		title: "二哈!",
		props :{
			type: "text",
			name: "username",
		}
	}
});
5.5 v-model
  • 语法:
    <标签 v-model=“表达式”></标签>

在表单控件上创建双向绑定
表单的值被修改时, 基于dom监听机制, 就会自动修改data中的数据中,
当data中的数据被修改时,基于数据绑定机制, 自动会把新的内容自动更新到value属性上. 页面视图也发生了改变. 双向绑定

  • 注意事项:
    • 如果单行文本的表单元素被绑定一个数据时, 该表单的默认值不是value属性决定而是有data中的数据决定.
    • 绑定在复选框上数据必须是一个数组, 当绑定的数据和复选框的value值一致时会自动选中-回显
    • v-model只作用于以下表单:
      input select textarea
<div id="app">
  <h1>绑定到type=text的input表单元素</h1>
  姓名:<input type="text" v-model="inputValue"><br/>
  data中的值:{{inputValue}}

  <h1>绑定到type=checkbox的input表单元素</h1>
  打篮球:<input type="checkbox" v-model="checkboxValue" value="打篮球"><br/>
  踢足球:<input type="checkbox" v-model="checkboxValue" value="踢足球"><br/>
  data中的值:{{checkboxValue}}


  <h1>绑定到type=radio的input表单元素</h1>
  打篮球:<input type="radio" v-model="radioValue" value="打篮球"><br/>
  踢足球:<input type="radio" v-model="radioValue" value="踢足球"><br/>
  data中的值:{{radioValue}}

  <h1>绑定到textarea的元素</h1>
  个人简介:<textarea v-model="textareaValue"></textarea><br/>
  data中的值:{{textareaValue}}


  <h1>绑定到单选的select的元素</h1>
  技能:<select v-model="skills">
        <option value="java">java</option>
        <option value="php">php</option>
        <option value=".net">.net</option>
      </select><br/>
  data中的值:{{skills}}

</div>

var app = new Vue({
	el: "#app",
	data: {
		inputValue: "初始化的值",
		checkboxValue: ["踢足球"],
		radioValue: "打篮球",
		textareaValue: "你是一个优秀的软件工程师!",
		skills: "java",
	}
});
5.6 v-show
  • 语法:
    <标签名 v-show=“表达式”></标签名>

  • 作用:
    根据表达式之真假值,切换元素的 display CSS 属性。当条件变化时该指令触发过渡效果。
    当v-show的值为假时, 会在标签的css中添加 display: none :

  • 注意事项:
    当表达式中的值是false时, 该标签仅仅是被隐藏了,而没有被从页面上删除
    标签的值会自动转换为boolean类型的值

<body>
<div id="div1">
    <span v-show="boolean1">快拉上了卡萨卡111</span><br>
    <span v-show="boolean2">快拉上了卡萨卡222</span><br>
    <span v-show="boolean3>50">快拉上了卡萨卡333</span><br>


</div>
</body>
<script>
    var vue1 = new Vue({
        el: "#div1",

        data: {
            boolean1: true,
            boolean2: false,
            boolean3: 80,
        }

    })
</script>
5.7 v-if/v-else-if/v-else
  • 语法:
    <标签名 v-if=“表达式”></标签名>
    <标签名 v-else-if=“表达式”></标签名>
    <标签名 v-else-if=“表达式”></标签名>
    <标签名 v-else></标签名>
<div id="div1">
    <div v-if="boolean3<60 ">不及格</div>
    <div v-else-if="boolean3>60 & boolean3<90">及格</div>
    <div v-else="boolean3>90">优秀</div><br>


</div>
</body>
<script>
    var vue1 = new Vue({
        el: "#div1",

        data: {
            boolean1: true,
            boolean2: false,
            boolean3: 40,
        }

    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值