Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 如何将vue单个组件模板部分拆分为更小的子模板_Vuejs2_Vue Component_Vue.js - Fatal编程技术网

Vuejs2 如何将vue单个组件模板部分拆分为更小的子模板

Vuejs2 如何将vue单个组件模板部分拆分为更小的子模板,vuejs2,vue-component,vue.js,Vuejs2,Vue Component,Vue.js,我的应用程序正在构建中vuejs@2具有多个表单,大多数表单使用“添加”和“重置”按钮共享同一html模板。和相同的方法一样,resetForm会使“item”属性为空并重置表单,create方法会将该项发送到后端 <div class="row"> <div class="action"> <button class="btn btn-white" @click="create()">&#9998; Add</butto

我的应用程序正在构建中vuejs@2具有多个表单,大多数表单使用“添加”和“重置”按钮共享同一html模板。和相同的方法一样,resetForm会使“item”属性为空并重置表单,create方法会将该项发送到后端

<div class="row">
    <div class="action">
        <button class="btn btn-white" @click="create()">&#9998; Add</button>
        <button class="btn btn-white" @click="resetForm()">&#x274C; Reset</button>
    </div>
</div>

✎ 添加
❌;重置
我可以通过mixin与每个组件共享方法,但不能以相同的方式共享“模板部分”。如何处理这种情况


我试图创建组件创建重置按钮,但我无法触发父方法,因为每个组件都封装了其功能,并且不允许从子组件修改道具。重置父窗体时需要执行这些操作。

不允许组件修改道具,但如详细说明,子组件可以与父组件通信

在Vue.js中,父子组件关系可以概括为道具下降、事件上升。父对象通过道具将数据向下传递给子对象,子对象通过事件向父对象发送消息。让我们看看他们接下来是如何工作的

以下是将道具传递给chile元素的代码:

<div>
  <input v-model="parentMsg">
  <br>
  <child v-bind:my-message="parentMsg"></child>
</div>


HTML:


{{total}}

JS:

Vue.component('button-counter'{
模板:“{counter}}”,
数据:函数(){
返回{
柜台:0
}
},
方法:{
增量:函数(){
这是一个计数器+=1
此.$emit('增量')
}
},
})
新Vue({
el:“#计数器事件示例”,
数据:{
总数:0
},
方法:{
incrementTotal:函数(){
此值为1.total+=1
}
}
})

组件不允许修改道具,但如详细说明,子组件可以与父组件通信

在Vue.js中,父子组件关系可以概括为道具下降、事件上升。父对象通过道具将数据向下传递给子对象,子对象通过事件向父对象发送消息。让我们看看他们接下来是如何工作的

以下是将道具传递给chile元素的代码:

<div>
  <input v-model="parentMsg">
  <br>
  <child v-bind:my-message="parentMsg"></child>
</div>


HTML:


{{total}}

JS:

Vue.component('button-counter'{
模板:“{counter}}”,
数据:函数(){
返回{
柜台:0
}
},
方法:{
增量:函数(){
这是一个计数器+=1
此.$emit('增量')
}
},
})
新Vue({
el:“#计数器事件示例”,
数据:{
总数:0
},
方法:{
incrementTotal:函数(){
此值为1.total+=1
}
}
})
Vue.component('button-counter', {
  template: '<button v-on:click="increment">{{ counter }}</button>',
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    increment: function () {
      this.counter += 1
      this.$emit('increment')
    }
  },
})
new Vue({
  el: '#counter-event-example',
  data: {
    total: 0
  },
  methods: {
    incrementTotal: function () {
      this.total += 1
    }
  }
})