javascript - 如何将对象传递给 Vue 组件?

标签 javascript html vue.js

我想用数据对象调用 Vue 组件。

tod​​o-item 标签有效。 todo-item2 标签没有任何作用。 我期望得到同样的结果。

HTML:

<div id="app">
  <todo-item
  v-bind:text="todo.text"
  v-bind:is-complete="todo.isComplete"></todo-item>
  <todo-item2 v-bind:="todo"></todo-item2>
</div>

脚本:

var Todo = {
  props: ['text', 'isComplete'],
  template: '<p>{{ text }} : {{ isComplete }}</p>'
}

var Todo2 = {
  props: ['todo'],
  template: '<p>{{ todo.text }} : {{ todo.isComplete }}</p>'
}

new Vue({
  el: '#app',
  data: {
    todo: {
        text: 'Learn Vue',
        isComplete: false
        },
  },
  components: {
    todoItem: Todo,
    todoItem2: Todo2,
  }
})

我认为它无法识别 todo-item2 中的“文本”。

控制台:

TypeError: Cannot read property 'text' of undefined
    at Proxy.eval (eval at createFunction (VM218 vue.js:10518), <anonymous>:2:43)
    at VueComponent.Vue._render (VM218 vue.js:4465)
    at VueComponent.updateComponent (VM218 vue.js:2765)
    at Watcher.get (VM218 vue.js:3113)
    at new Watcher (VM218 vue.js:3102)
    at mountComponent (VM218 vue.js:2772)
    at VueComponent.Vue$3.$mount (VM218 vue.js:8416)
    at VueComponent.Vue$3.$mount (VM218 vue.js:10777)
    at init (VM218 vue.js:4059)
    at createComponent (VM218 vue.js:5499)

最佳答案

您忘记指示 v-bind女巫属性(property)你绑定(bind)了吗<todo-item2 v-bind:="todo"></todo-item2>应该是<todo-item2 v-bind:todo="todo"></todo-item2>

var Todo = {
  props: ['text', 'isComplete'],
  template: '<p>{{ text }} : {{ isComplete }}</p>'
}

var Todo2 = {
  props: ['todo'],
  template: '<p>{{ todo.text }} : {{ todo.isComplete }}</p>'
}

new Vue({
  el: '#app',
  data: {
     todo: {
        text: 'Learn Vue',
        isComplete: false
     }
  },
  components: {
    todoItem: Todo,
    todoItem2: Todo2,
  }
})
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
  <todo-item
  v-bind:text="todo.text"
  v-bind:is-complete="todo.isComplete"></todo-item>
  <todo-item2 v-bind:todo="todo"></todo-item2>
</div>

关于javascript - 如何将对象传递给 Vue 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48515190/

相关文章:

javascript - 将图像从视频 JS 保存到 Canvas

html - 菱形表

html - 如何在标签后向textarea添加换行符

javascript - 一旦路由更改,取消所有先前组件的 http 请求

javascript - Vue根据循环长度生成对象数组

javascript - 较低分辨率的中心滚动条

javascript - 提交前使用 javascript 进行 HTML 表单验证

javascript - jquery 重定向问题

HTML5 标签的好处

javascript - Vue forEach 计算