Vue 给子组件传递参数
- 首先看个例子吧
html
<div class="container" id="app"> <div class="row"> <div class="col-sm-12"> <h3>My Components</h3> <todo-item :todos="todos01"></todo-item> </div> </div> </div> <script type="x-template" id="component-todo"> <ul class="list-group" v-if="todos && todos.length > 0"> <li class="list-group-item" v-for="todo in todos" :class="{special: !todo.isSpecial}"> {{todo.title}} <button class="btn btn-xs pull-right" :class="{‘btn-success‘: todo.isSpecial,‘btn-danger‘: !todo.isSpecial }" @click="changeActive(todo)"> {{todo.isSpecial ? ‘DONE‘ : ‘What?‘}} </button> </li> </ul> <div v-else> <p>There isn‘t any todo</p> </div> </script>
js
var todoItem = Vue.extend({ template: ‘#component-todo‘, props: [‘todos‘], methods: { changeActive(todo) { todo.isSpecial = !todo.isSpecial; } } }) Vue.component(‘todo-item‘, todoItem); new Vue({ el: ‘#app‘, data: { todos: [{ id: 1, title: ‘zgo to shoping‘, isSpecial: false }, { id: 2, title: ‘jump for sport‘, isSpecial: true }, { id: 3, title: ‘welcome vueJs‘, isSpecial: true }], todos01: [{ id: 1, title: ‘so so crazy‘, isSpecial: true }, { id: 2, title: ‘i v ini‘, isSpecial: false }, { id: 3, title: ‘nothing is there‘, isSpecial: true }] } })
<todo-item :todos="todos01"></todo-item>
todos是组件中通过props传递过来的参数,todos01是组件上一层定义的
可以尝试将todos01换成todos看看效果
时间: 2024-10-02 20:11:47