如何将Vue属性设置为字符串化元素属性的值?

时间:2018-07-27 13:03:44

标签: javascript vue.js vuejs2

原谅我这个非常愚蠢的问题。

我有这样的东西:

var app = new Vue({
  el: '#app',
  data: {
    words: []
  },
  created() {
    let something = document.getElementById('word_data')
    if (something) { this.words = something.dataset.content.slice() }
  }
})

这是HTML部分:

<input type="hidden" id="word_data" data-content="[&quot;one&quot;,&quot;two&quot;,&quot;thee&quot;]">

这只是["one", "two", "three", "four", "etc"]格式的数组。

我正在尝试将此数组分配给Vue中的words。我该怎么办?

如果我按照示例中的方式分配它,它将把整个数组作为一条记录。

我确信这很简单。我想念什么?

1 个答案:

答案 0 :(得分:2)

只需获取元素的data-content属性值,然后使用JSON.parse()即可将其转换为您提供的格式。

var app = new Vue({
  el: '#app',
  data: {
    words: []
  },
  created() {
    const element = document.getElementById('word_data');
    const data = JSON.parse(element.getAttribute('data-content'));
    if (data) { this.words = data }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<input type="hidden" id="word_data" data-content="[&quot;one&quot;,&quot;two&quot;,&quot;thee&quot;]" >

<div id="app">
  <ul>
    <li v-for="word in words">{{word}}</li>
  </ul>
</div>