双向绑定
大约 1 分钟
双向绑定
声明式渲染
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:
<div id="counter">Counter: {{ counter }}</div>
export default createPage({
data() {
return {
counter: 0,
};
},
});
我们已经成功创建了一个小程序页面。看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。我们要怎么确认呢?请看下面的示例,其中 counter property 每秒递增,你将看到渲染的 DOM 是如何变化的:
const CounterApp = {
data() {
return {
counter: 0,
};
},
mounted() {
setInterval(() => {
this.counter++;
}, 1000);
},
};
处理用户输入
为了让用户和应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在实例中定义的方法:
<div id="event-handling">
<p>{{ message }}</p>
<button v-on:click="reverseMessage">反转 Message</button>
</div>
export default createPage({
data() {
return {
message: "Hello Vue.js!",
};
},
methods: {
reverseMessage() {
this.message = this.message.split("").reverse().join("");
},
},
});
注意在这个方法中,我们更新了应用的状态,但没有触碰 DOM——所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可。 Vue 还提供了 v-model
指令,它能轻松实现表单输入和应用状态之间的双向绑定。
<div id="two-way-binding">
<p>{{ message }}</p>
<input v-model="message" />
</div>
export default createPage({
data() {
return {
message: "Hello Vue!",
};
},
});