【发布时间】:2016-06-13 15:32:12
【问题描述】:
我正在尝试了解 vue.js,但我似乎遗漏了一些重要的东西。
我有几个盒子,我希望它们像手风琴一样工作(只显示一个;打开另一个盒子会关闭前一个盒子)。这是我的代码:
<div id="app">
<div class="block">
<button v-on:click="mytoggle(0,$event)">block one</button>
<div v-if="boxes[0]">
<p>i am box number one</p>
<p>i am box number one</p>
</div>
</div>
<div class="block">
<button v-on:click="mytoggle(1,$event)">block two</button>
<div v-if="boxes[1]">
<p>i am box number two</p>
<p>i am box number two</p>
</div>
</div>
<div class="block">
<button v-on:click="mytoggle(2,$event)">block three</button>
<div v-if="boxes[2]">
<p>i am box number three</p>
<p>i am box number three</p>
</div>
</div>
<pre>{{ $data | json }}</pre>
</div>
和脚本:
var vm = new Vue({
el: '#app',
methods: {
mytoggle: function (n, event) {
event.preventDefault();
for(var i = 0; i < 3; i++) { // close all boxes
this.boxes[i] = false;
}
this.boxes[n] = true; // open the corresponding box
console.log(n);
}
},
data: {
boxes: [false,true,false]
}
});
当页面被加载时,第二个盒子被显示(这是正确的,因为盒子数组中的第二个元素为真)。
但是点击按钮不会改变 box.array 也不会改变盒子的显示。日志告诉我,这样的脚本似乎可以工作,因为我在单击按钮时记录了正确的值。 所以我想它在绑定中。 有人可以带领我走上正确的道路吗?
【问题讨论】:
标签: javascript vue.js