Vue.js: v-for 与模板文字的行为不同

Vue.js: v-for behaves different with template literals

为什么 v-for 在使用 numberstemplate literals 时表现不同?

这是一个例子:

new Vue({
  el: "#app",
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">

  <p>Result with template literal</p>
  <ul>
    <li
      v-for="pages in `${2+2}`" 
      :key="pages"
    >
      <p>{{pages}}</p>
    </li>
  </ul>
  
  <p>Result with straight number</p>
  <ul>
    <li
      v-for="pages in 4" 
      :key="pages"
    >
      <p>{{pages}}</p>
    </li>
  </ul>
  
</div>

它们不一样。在第一个中,您在字符串上使用 v-for。在这种情况下,vue 将循环遍历字符并将每个字符显示在 li 中。在第二个中,它是一个整数。在这种情况下,vue 将使用 range 机制

new Vue({
  el: "#app",
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">

  <p>Result with template literal</p>
  <ul>
   <!--Displays 1, 0, 0-->
    <li
      v-for="pages in `100`" 
      :key="pages"
    >
      <p>{{pages}}</p>
    </li>
  </ul>
  
  <p>Result with straight number</p>
  <ul>
    <li
      v-for="pages in 4" 
      :key="pages"
    >
      <p>{{pages}}</p>
    </li>
  </ul>
  
</div>