vue2.js组件vmodel传递数据

时间:2017-04-20 08:32:41

标签: javascript vue.js vuejs2

我对如何将传递v模型数据用于组件缺乏了解。

我可以直接访问复选框模型数据,还是需要通过道具传入组件?

如果某人的代码解释或指向某个有用的地方?

我的Html

  <template id="my-child">

    <tr>
      <td >{{ item.title }}</td>
      <td style="padding:20px" v-for="price in item.prices"   v-bind:price="price" >{{ price }}</td>
    </tr>
  </template>


    <template id="my-parent">

      <div class="box" >
          <div v-for="item in items">
            <h1>{{ item.name }}</h1>
                <img :src="item.imageUrl" style="width:200px;">
                <p>{{item.extract}}</p>
                {{ item.holidayType }}

                  <div is="task" v-for="avail in item.avail"   v-bind:item="avail"  >

                  </div>    


          </div>
      </div>

    </template>

   <div id="root">
      <div id="homesFilters">


          <input type="checkbox" id="1" value="hottub" v-model="test"> hot tub
          <input type="checkbox" id="2" value="garden" v-model="test"> garden
          <input type="checkbox" id="3" value="cottage" v-model="test"> cottage
      </div>

       <task-list></task-list>
    </div>

我的代码

Vue.component('task-list', {
  template: '#my-parent',
  props: ['test'],
  data: function() {
        return {
            items: [],

        }
  },
  methods: {
    getMyData: function(val) {

      console.log(this.test);

        var _this = this;
        $.ajax({
            url: 'vuejson.php',
            method: 'GET',
            success: function (data) {

                _this.items = data;
            },
            error: function (error) {
                alert(JSON.stringify(error));
            }  
        })

     }
  },
  mounted: function () {
       this.getMyData("0");
    }
});

Vue.component('task', {

  template: '#my-child',
  props: ['item'],

    data: function() {
        return {

        }
    }
});


new Vue({
  el: "#root",
  data: {
      test:[]
  },

});

</script>

1 个答案:

答案 0 :(得分:1)

我将代码(以及模拟数据)快速编写代码:https://codepen.io/tuelsch/pen/RVrXbX?editors=1010

要访问父组件上的复选框值var ageConditiion = 15; var originQuery = from a in myPerson select a; var result1 = originQuery.Where(a => a.Age > ageConditiion).ToList(); var result2 = originQuery.Where(a => a.Name == "John").ToList(); ,您可以将其作为道具传递给父组件,如下所示:

test

这样,它始终是组件的最新版本。在我的codepen中,我将值打印到页面以说明此行为。

如果您的应用程序变大,您可能需要考虑使用像vuex https://vuex.vuejs.org/en/这样的通量模式来存储过滤器值并从组件中访问它们。