VUE实例的属性和方法

vue

转 https://www.jianshu.com/p/79ff79c87e16

VUE属性与方法

属性

vm.$el

#指定要绑定的元素

vm.$data

#Vue 实例的数据对象

vm.$options

#获取自定义属性的值

new Vue({

customOption: \'foo\', 自定义属性

created: function () {

console.log(this.$options.customOption) // => \'foo\'

}

}) 

vm.$refs

#获取所有ref属性的标签

<h2 ref="hello">你好</h2>

<p ref="world">世界</p>

console.log(vm.$refs);

//{hello: h2, world: p}

vm.$refs.hello.style.color=\'blue\'; 给标签添加style

实例

<!DOCTYPE html>

<html>

<head>

<title></title>

<script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>

</head>

<body>

<div id="app">

<p>{{ message }}</p>

<h1 ref="hello">注册了ref特性</h1>

</div>

<script type="text/javascript">

var app = new Vue({

el: \'#app\',

data: {

message : "Hello Vue"

},

name:\'ren\',

age:23,

show:function () {

console.log(\'show!\');

}

})

//app.属性名 获取data中属性

console.log(app.message);// hello vue

//app.$el 获取vue实例中使用的根 DOM元素

console.log(app.$el);// <div id=\'app\'>...</div>

app.$el.style.color=\'red\';

//app.$data 获取数据对象data

console.log(app.$data);// {_ob_:observer}

console.log(app.$data.message);// hello vue

//app.$options 获取自定义属性和调用自定义方法

console.log(app.$options.name); //ren

console.log(app.$options.age); //23

app.$options.show(); //show!

//app.$refs 获取所有添加过ref属性的元素(一个对象,持有注册过 ref特性 的所有DOM元素和组件实例)

console.log(app.$refs.hello); //<h1 style="color:blue">注册了ref特性</h1>

app.$refs.hello.style.color="blue";

</script>

</body>

</html>

方法

vm.$mount()

#手动挂载 //vm.$mount(\'#itany\');

vm.$destroy()

#销毁实例

vm.$delete(object,key)

#删除属性值 Vue.delete(this.user,\'age\')

vm.$nextTick( [callback] )

将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。

new Vue({

// ...

methods: {

// ...

example: function () {

// 修改数据

this.message = \'changed\'

// DOM 还没有更新

this.$nextTick(function () {

// DOM 现在更新了

// `this` 绑定到当前实例

this.doSomethingElse()

})

}

}

})

实例

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

<link href="../css/mui.min.css" rel="stylesheet" />

</head>

<body>

<div id="content">

{{msg}}

<h1 ref="hello">他的名字是:{{name}}</h1>

</div>

<script src="../js/mui.min.js"></script>

<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

mui.init()

var vm=new Vue({

el:"#content",

data:{

msg:"hello world!",

name:"小杨"

}

})

/**

* 方法

*/

//vm.$nextTick(callback)

//改变数据

vm.name="大杨";

//这里打印的还是dom更新之前的数据,因为Dom更新需要时间,还没更新完,Vue实现响应式并不是数据发生改变后dom立即变化

// console.log(vm.$refs.hello.textContent);//他的名字是:小杨

//正确写法如下,dom更新完成后再执行

vm.$nextTick(function(){

//现在dom更新完成

console.log("利用$nextTick方法:"+vm.$refs.hello.textContent);

})//他的名字是大杨

</script>

</body>

//页面上显示的是 他的名字是大杨

</html>

 实例

<body>

<div id="content">

<button @click="updateName()">改变属性值</button>

<button @click="addAge()">增加一个属性</button>

<button @click="deleteAge()">删除一个属性</button>

<div>

姓名{{user.name}}

<br>

年龄:{{user.age}}

</div>

</div>

<script type="text/javascript">

var vm = new Vue({

el: "#content",

data: {

user: {

id: 1000,

name: "tom"

}

},

methods: {

updateName: function() {

this.user.name = "jack";

},

addAge: function() {

// this.user.age=23;//通过普通的方式为对象添加属性时,Vue无法实时监视到

// this.$set(this.user,\'age\',23);//通过Vue实例的$set方法为对象添加属性,可以实时监视

// Vue.set(this.user,\'age\',23);//还有一种写法,通过全局 Vue.set方法,$set就是全局 Vue.set 的别名

//示例,当还没有属性时添加属性,有属性就加1

if(this.user.age){

this.user.age++;

}else{

Vue.set(this.user,\'age\',23);

}

},

deleteAge:function(){

if(this.user.age){

// this.$delete(this.user,\'age\');//通过Vue实例的$delete方法为对象删除属性

Vue.delete(this.user,\'age\');//通过全局 Vue.delete方法

}

}

}

})

</script>

</body>

</html>

vm.$watch( \'监控对象name\', callback, [options] )

 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。

watch的参数

handle    就是你watch中需要具体执行的方法
deep:   

 就是你需要监听的数据的深度,一般用来监听对象中某个属性的变化,一般的watch只能监听到data的数据,而监听不到data里面对象的属性改变,这时候就需要deep属性。,deep会给对象的每一个属性绑定handle,如果对象属性过多,可以设置监听单独属性

 watch: {

\'cityName.name\': { //监听data中cityName的name属性变化

handler(newName, oldName) {

// ...

},

deep: true,

immediate: true

}

}


immediate:

在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调,当我们第一次绑定时,不会立刻触发监听函数,只有当监听对象值发生改变时才会触发监听函数,如果我们需要最初绑定值时也执行函数,则需要immediate属性,比如当父组件向子组件动态传值时,子组件props首次获取到父组件传来的默认值时,也需要执行函数,此时就需要将immediate设为true

<div id="content">

<input type="text" v-model="name" />

<input type="text" v-model="age" />

<div>

姓名{{user.name}}

<br>

年龄:{{user.age}}

</div>

<!-- 对象监视 -->

<input type="text" v-model="user.name" />

</div>

<script type="text/javascript">

var vm = new Vue({

el: "#content",

data: {

name: "rose",

age: 25,

user: {

id: 1000,

name: "tom"

}

},

watch: { //方式2,是用Vue示例提供的watch选项

age: function(newValue, oldValue) {

console.log("age值发生改变,由" + oldValue + "变成了" + newValue);

},

user: {

//监视对象

handler: function(newValue, oldValue) {

//注意:在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。

console.log("user对象值发生改变,由" + oldValue.name + "变成了" + newValue.name);

},

deep: true //深度监视,当对象中的属性发生变化时也会监视

}

}

});

//方式1,使用Vue示例的$watch方法监视数据变化

vm.$watch(\'name\', function(newValue, oldValue) {

console.log("name值发生改变啦,由" + oldValue + "变成了" + newValue);

})

个人

以上是 VUE实例的属性和方法 的全部内容, 来源链接: utcz.com/z/376935.html

回到顶部