Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Vue.js VueJS插槽:为什么从父对象通过插槽传入的子方法不';不行?_Vue.js_Vuejs2 - Fatal编程技术网

Vue.js VueJS插槽:为什么从父对象通过插槽传入的子方法不';不行?

Vue.js VueJS插槽:为什么从父对象通过插槽传入的子方法不';不行?,vue.js,vuejs2,Vue.js,Vuejs2,我有一个简单的vue 在这个演示中,我通过父对象的插槽将方法传递给子组件(在子对象中定义)。但是,当单击此方法所附加的按钮时,该方法不会执行 我想知道为什么(从父级)通过插槽传递的子方法不起作用。我对这背后的逻辑更感兴趣 App.vue <template> <div id="app"> <img width="25%" src="./assets/logo.png" /> <user> <button @cl

我有一个简单的vue

在这个演示中,我通过父对象的插槽将方法传递给子组件(在子对象中定义)。但是,当单击此方法所附加的按钮时,该方法不会执行

我想知道为什么(从父级)通过插槽传递的子方法不起作用。我对这背后的逻辑更感兴趣

App.vue

<template>
  <div id="app">
    <img width="25%" src="./assets/logo.png" />
    <user>
      <button @click="changeName('Don')">Change Name</button>
    </user>
  </div>
</template>

<script>
import user from "./components/user";

export default {
  name: "App",
  components: {
    user
  },
  data: function() {
    return {
      msg: "Name is Bond.. James Bond"
    };
  }
};
</script>
<template>
  <div class="wrapper">
    <h2>My name is "{{myName}}"</h2>
    <slot></slot>
  </div>
</template>

<script>
export default {

  data() { 
    return {
      myName: 'Bond'
    }
  },

  methods: {
    changeName: function(newName){
      this.myName = newName
    }
  }
};
</script>

改名
从“/components/user”导入用户;
导出默认值{
名称:“应用程序”,
组成部分:{
用户
},
数据:函数(){
返回{
味精:“名字是邦德..詹姆斯·邦德”
};
}
};
User.vue

<template>
  <div id="app">
    <img width="25%" src="./assets/logo.png" />
    <user>
      <button @click="changeName('Don')">Change Name</button>
    </user>
  </div>
</template>

<script>
import user from "./components/user";

export default {
  name: "App",
  components: {
    user
  },
  data: function() {
    return {
      msg: "Name is Bond.. James Bond"
    };
  }
};
</script>
<template>
  <div class="wrapper">
    <h2>My name is "{{myName}}"</h2>
    <slot></slot>
  </div>
</template>

<script>
export default {

  data() { 
    return {
      myName: 'Bond'
    }
  },

  methods: {
    changeName: function(newName){
      this.myName = newName
    }
  }
};
</script>

我的名字是“{myName}”
导出默认值{
数据(){
返回{
我的名字:“邦德”
}
},
方法:{
changeName:函数(新名称){
this.myName=newName
}
}
};

谢谢。

如果在父级中调用该方法,还需要在父级中定义该方法。这与是否使用插槽无关

模板中调用的任何方法都只引用该组件的实例。这是不需要引用此的副产品

在您的示例中,要向父级授予对
myName
的访问权,请使用
作用域插槽
,并将setter或子实例传递给插槽父级。或者为插槽父级提供单击方法


这与为什么不向子对象发送事件密切相关。有关更多信息,请参阅。

如果要将数据传递给孩子,请使用道具。如果要将数据传递给父级,请使用“发射”

你能详细说明你的答案吗?请看这篇关于如何回答问题的文章