【发布时间】:2018-01-11 12:04:49
【问题描述】:
我的问题是我不知道如何在我的代码上实现 Vue.set 和 array.splice 以避免 Javascript 警告。
这是我想要做的:
我用鼠标或触控板突出显示文本,并且在 mouseup 上突出显示的文本存储在对象数组中。每个对象都包含选定的文本。
我希望在该数组上循环,以便能够一一显示所有选择,只要我选择不同的文本。
基本上,我将每个选定的文本存储到 selectionArray。每个 selectedText 都是对象内的字符串。所以 SelectionArray 变成了这样的对象数组在第一次选择时:
[
{selectedText: '...string...'}
]
在第二次选择时,数组被更新:
[
{selectedText: '...string...'},
{selectedText: '...another string...'}
]
等等...最后,我在等于 selectionArray 的 items 数组上使用 v-on 循环:
this.items = selectionArray
目前我快到了,但 Vue 无法检测到数组项和对象属性的添加/删除。 Caveats Vue 指南部分解释了它,但我不知道如何做,因为我对 Vue js 很陌生。有什么帮助吗?
代码如下:
<template>
<main class='wrapper'>
<section class='wrapper-copy'>
<div class='copy'>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis sequi dolorum soluta pariatur asperiores. Recusandae atque nesciunt ipsa velit impedit fugit enim, quia explicabo adipisci sunt earum laudantium illo. Tenetur.
Animi magnam corrupti atque mollitia eaque enim, voluptatum magni laboriosam vel possimus reprehenderit aut doloribus inventore repellat aliquam voluptatem esse ut saepe at iusto qui quibusdam doloremque exercitationem ipsam. Dicta.
In animi nobis accusamus nemo repellat dicta a repellendus provident accusantium fugit voluptas minus laudantium reiciendis cumque, amet porro maiores quisquam? Ullam aut voluptatem delectus cum rerum perferendis vero laudantium!
</div>
</section>
<article class="wrapper-select">
<div class="select">
<div id='input'
class='selected-copy'
v-for='(item, index) in items'
:key='item.index'>
<div class='index'>{{ index }} </div>
<p class='selection'> {{ item.selectedText }} </p>
</div>
</div>
</article>
</main>
</template>
<script>
export default {
name: 'app',
data () {
return {
items: []
}
},
created () {
var selectionArray = []
function storeSelection () {
var selectedText = window.getSelection().toString()
if (selectedText.length && selectionArray.indexOf(selectedText) === -1) {
selectionArray[selectionArray.length] = {selectedText}
}
console.log(selectionArray)
}
document.addEventListener('mouseup', storeSelection)
this.items = selectionArray
console.log(this.items)
}
}
</script>
【问题讨论】:
标签: javascript arrays vuejs2