javascript - 在 vue.js 中声明响应式(Reactive)数据属性?

标签 javascript vuejs2

我有一个非常基本的 vue.js 应用程序:

var app = new Vue({
  el: '#app',
  delimiters: ['${', '}'],

  data: {
    messages: [
      'Hello from Vue!',
      'Other line...'
    ]
  }

})

下面的html工作正常:

  <div class="container" id="app">
    <div class="row" style="">
      <div class="col-md-8 offset-md-2">
        <span v-for="msg in messages">${msg}</span>
      </div>
    </div>
  </div>

但是非常相似的 html block 却没有:

  <div class="container" id="app">
    <div class="row" style="">
      <div class="col-md-8 offset-md-2">
        <textarea id="chat_area" readonly="" rows="20">
          <span v-for="msg in messages">${msg}</span>
        </textarea>
      </div>
    </div>
  </div>

[Vue warn]: Property or method "msg" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

我使用的是 Vue v2.3.3。可能是什么问题?

最佳答案

documentation说,文本区域中的插值不起作用,因此您需要使用 v-model

如果你唯一想做的就是在textarea中显示html,理论上你可以使用一个丑陋的解决方法,将数组字段包装在一个函数中并将该函数设置为textarea v-model:

var app = new Vue({
  el: '#app',
  delimiters: ['${', '}'],
  data: {
    messages: [
      'Hello from Vue!',
      'Other line...'
    ]
  },
  computed:{
    multiLineMessages: function(){
      var result = "";
      for(var message of this.messages){
        result += '<span>' + message + '</span>'
      }
      return result;
        }
    }
});

模板部分:

<div class="container" id="app">
    <div class="row" style="">
      <div class="col-md-8 offset-md-2">
        <textarea v-model="multiLineMessages" placeholder="add multiple lines">
        </textarea>
      </div>
    </div>
  </div>

这更像是证明它是可行的,但我强烈不建议在任何地方使用它,因为 html 不应该以这种方式生成(尤其是较大的 block )。

jsFiddle preview

关于javascript - 在 vue.js 中声明响应式(Reactive)数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44070599/

相关文章:

javascript - jQuery UI 选项卡 : Targeting Dynamic Tab from a Link

javascript - 如何在Vue中导入本地存储的xml文件并进行编辑?

javascript - 使用 Node 提供 Vue 应用程序时,构建会导致空 HTML 页面出现语法错误

vue.js - Vue.js react 性如何在幕后工作?

javascript - 如何使用vue js过滤日期范围?

javascript - VueJS 有条件地为元素添加一个属性

javascript - 为什么在 "0"的短路评估中呈现 `array.length && ...`

javascript - R - 使用 javascript 格式化数据表

JavaScript - 通过计数查找对象数组中的唯一值并创建新的对象数组

javascript - 函数变量未定义