Javascript 将href从父组件动态传递到子组件vue.js

Javascript 将href从父组件动态传递到子组件vue.js,javascript,vue.js,nuxt.js,Javascript,Vue.js,Nuxt.js,所以我有一个打开的模式,有一个“linkout”按钮,当用户点击指向另一个站点/页面的链接时,这个模式就会打开。我要做的是打开模式,并将父链接的HREF传递给模式“linkout”按钮。我确信我可以直接将链接添加到模式中,但是我想知道是否有一种方法可以动态地将链接从父级绑定到模式链接输出按钮 家长: <template> <div> <a

所以我有一个打开的模式,有一个“linkout”按钮,当用户点击指向另一个站点/页面的链接时,这个模式就会打开。我要做的是打开模式,并将父链接的HREF传递给模式“linkout”按钮。我确信我可以直接将链接添加到模式中,但是我想知道是否有一种方法可以动态地将链接从父级绑定到模式链接输出按钮

家长:

                   <template>
                     <div>
                      <a
                      @click.prevent="showInterstitial()"
                      href="https://www.linkout.com"
                      rel="noopener"
                      target="_blank"
                      >link out</a
                          >
                  </div>
              <Interstitial ref="openInterstitial"></Interstitial>
             </template>

<script>
import Interstitial from "~/components/blocks/modals/Interstitial.vue";

export default {
  components: {
    Interstitial
  },
  methods: {
    showInterstitial() {
      this.$refs.openInterstitial.showDialog();
    }
  }
};
</script>
         

接近
导出默认值{
名称:“间隙”,
组成部分:{
“el对话”:对话
},
数据(){
返回{
间质性对话:false
};
},
方法:{
showDialog(){
this.alDialogVisible=true;
},
closeDialog(){
this.alDialogVisible=false;
}
};

在单击事件中,您可以从
showInterstitial
方法中删除括号,如下所示:


这样,您就可以访问处理程序上的事件对象作为参数,从而读取链接的
href
属性

由于您已经在模态上调用了一个方法来显示它,您可以只传递带有参数的数据

家长:

                   <template>
                     <div>
                      <a
                      @click.prevent="showInterstitial()"
                      href="https://www.linkout.com"
                      rel="noopener"
                      target="_blank"
                      >link out</a
                          >
                  </div>
              <Interstitial ref="openInterstitial"></Interstitial>
             </template>

<script>
import Interstitial from "~/components/blocks/modals/Interstitial.vue";

export default {
  components: {
    Interstitial
  },
  methods: {
    showInterstitial() {
      this.$refs.openInterstitial.showDialog();
    }
  }
};
</script>
         
showInterstitial(e){
const href=e.target.href;//https://www.linkout.com
这个.refs.openinterstitual.showDialog(href);
}
儿童:

<template>
  <div ref="openInterstitial" class="container--interstitial">
    <el-dialog :visible.sync="interstitialDialogVisible">
      <div class="dialog-content">
        <p class="font--primary">
          Dialog Content
        </p>

        <div class="buttons">
          <a class="button button--primary" href="PASSLINKHEREFROMPARENT" target="_blank">Ok</a>
          <button class="button button--secondary" @click="closeDialog()">
            Close
          </button>
        </div>
      </div>
      <!-- /.dialog-content -->
    </el-dialog>
  </div>
  <!-- /.container--interstitial -->
</template>

<script> 
export default {
  name: "Interstitial",
  components: {
    "el-dialog": Dialog
  },
  data() {
    return {
      interstitialDialogVisible: false
    };
  },
  methods: {
    showDialog() {
      this.interstitialDialogVisible = true;
    },
    closeDialog() {
      this.interstitialDialogVisible = false;
    }
};
</script>

   
showDialog(href){
如果(href){
//做事
}
this.alDialogVisible=true;
},

在单击事件中,您可以从
showInterstitial
方法中删除括号,如下所示:


这样,您就可以访问处理程序上的事件对象作为参数,从而读取链接的
href
属性

由于您已经在模态上调用了一个方法来显示它,您可以只传递带有参数的数据

家长:

                   <template>
                     <div>
                      <a
                      @click.prevent="showInterstitial()"
                      href="https://www.linkout.com"
                      rel="noopener"
                      target="_blank"
                      >link out</a
                          >
                  </div>
              <Interstitial ref="openInterstitial"></Interstitial>
             </template>

<script>
import Interstitial from "~/components/blocks/modals/Interstitial.vue";

export default {
  components: {
    Interstitial
  },
  methods: {
    showInterstitial() {
      this.$refs.openInterstitial.showDialog();
    }
  }
};
</script>
         
showInterstitial(e){
const href=e.target.href;//https://www.linkout.com
这个.refs.openinterstitual.showDialog(href);
}
儿童:

<template>
  <div ref="openInterstitial" class="container--interstitial">
    <el-dialog :visible.sync="interstitialDialogVisible">
      <div class="dialog-content">
        <p class="font--primary">
          Dialog Content
        </p>

        <div class="buttons">
          <a class="button button--primary" href="PASSLINKHEREFROMPARENT" target="_blank">Ok</a>
          <button class="button button--secondary" @click="closeDialog()">
            Close
          </button>
        </div>
      </div>
      <!-- /.dialog-content -->
    </el-dialog>
  </div>
  <!-- /.container--interstitial -->
</template>

<script> 
export default {
  name: "Interstitial",
  components: {
    "el-dialog": Dialog
  },
  data() {
    return {
      interstitialDialogVisible: false
    };
  },
  methods: {
    showDialog() {
      this.interstitialDialogVisible = true;
    },
    closeDialog() {
      this.interstitialDialogVisible = false;
    }
};
</script>

   
showDialog(href){
如果(href){
//做事
}
this.alDialogVisible=true;
},