Vue
by nerdycap007
HTML
<div id="app">
{{ foo.bar }}
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
new Vue({
el: "#app",
data: {
foo: {
bar: 'bar'
}
},
created () {
let unwatch = this.$watch('foo.bar',
function (val, oldVal) {
if (typeof val === 'undefined') {
console.log('unwatch foo.bar');
return unwatch();
}
console.log(val)
},
{
immediate: true
}
)
},
mounted () {
setTimeout(() => {
this.foo.bar = 'baz'
}, 2000);
setTimeout(() => {
Vue.delete(this.foo, 'bar')
}, 4000);
setTimeout(() => {
this.foo.bar = 'foo'
}, 6000);
}
})