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