![](/img/trans.png)
[英]What is the best way to repeat html code using javascript object?
[英]What is be the best way to code selecting mode as Windows using javascript?
当您单击文件夹一次时,您可以 select 中的文件夹 windows..
我正在使用 Vuejs。 我想用多个 arrays 编写相同的代码,我从我的数据库中获取并使用v-for
公开
我正在考虑的是为每个数组添加一个新列(选择),默认value = 0
。 Then i can apply a function on-click on each array to change it's select value to value = 1
and i can also add a css class to distinct the selected element (Blue border color).
此时,列 select value = 1
的我的元素被选中。
当您想要更改选择(选择另一个数组)时,它变得更加复杂。 我需要首先使所有列(选择) value = 0
,其次,在重新启动操作之前删除所有 css 类。 (因为只能选择一个元素)
有什么建议吗? 谢谢
Vue.js 非常简单。 您不需要任何特殊的东西,例如列左右。 您只需要正确设置ViewModel
。 您的模板将是:
<div>
<!-- Note the use of dynamic :class bindings -->
<div v-for="folder in list" class="folder-item" :key="folder.id"
@click="onClick(folder)"
:class="{ 'folder-item__active': folder === selected }">
<span>{{ folder.folderName }}</span>
</div>
</div>
您的组件的 JavaScript 将是:
Vue.extend({
data() {
return {
// Initial list of folders
list: [
{ folderName: 'Folder 1', id: 1 /* Some more data */ },
{ folderName: 'Folder 2', id: 1 /* Some more data */ },
],
// Important to set to null for Vue.js to track reactivity
selected: null
};
},
mounted() {
// Later on change the folder list
setTimeout(() => {
this.list = [/* Some new list */]
this.selected = null;
}, 3000);
},
methods: {
onClick(selectedItem) {
this.selected = selectedItem;
}
}
});
需要注意以下三点:
:class
绑定。@click
事件处理程序来跟踪选定的文件夹。list
时,只需将selected
值更改为null
。 (在内部,比较引用以检测变化非常简单和容易。) 当然,如果您的列表由于使用不可变数据而不断变化,那么您的active
文件夹选择逻辑将失败。 在这种情况下,您可以依赖一些唯一标识符并相应地更新代码:
<!-- Vue binding -->
:class="{ 'folder-item__active': folder.id === selected && selected.id }"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.