• Vue 子组件和父组件共用相同的值,在子组件中改变父组件会随时改变,在父组件中改变子组件中也会随时改变


    //父组件代码
    <
    template> <div> <input v-model="place"/> <button @click="updatePlace">修改input内容</button> <home-chil :place='place' @onChange="onChange" :width='inputWidth' @click.native="changeNative"/> // @click.native给组件绑定原生事件 </div> </template> <script> import HomeChil from './HomeChil' export default { name: "Home", data(){ return{ inputWidth:100, place:'输入框的值' } }, components:{ HomeChil }, methods:{ updatePlace(val){ this.place='父组件改变input中的内容'; this.inputWidth=this.inputWidth+100; },

    //传递给子组件得方法,子组件可以调用父组件中得这个方法 onChange(val){
    this.place=val }, changeNative(){ console.log('dd'); } } }; </script> <style> </style>

    //子组件中得代码
    <
    template> <div style="border:1px solid red">
          <span>当父组件件中的值改变我也会变为:{{inputName}}</span> 
        <input v-model="inputName" @change="onChangeInput" :style="style"/>
        <button @click="changeInput">改变input中的内容</button>
      </div>
    </template>
    
    <script>
    export default {
      name: "HomeChil",
      props:{
          Number,
          place:String,
      },
      data() {
        return {
          inputName: this.place
        };
      },
      computed:{
    //动态添加样式 style(){
    return{ this.width+'px' } } }, created() { }, watch: { place(val) { this.inputName = val; }, inputName(val) { this.$emit("onChange", val); } }, methods: { changeInput() { this.inputName = "子组件改变得值"; } } }; </script> <style> </style>

    注意:

           1.在组件设一个新变量,将父组件传过来的值赋值给新变量inputName:this.place  ;

           2.有时候,传递的数据并不是直接写死的,而是来自父组件的动态数据,这时可以使用指令V-bind来动态绑定props的值,并且在子组件中用watch 监听父组件中传过来的值,将值赋值给新变量,这时当父组件的数据变化时,也会传递给子组件。在子组件中用watch监听inputName,当它改变时调用父组件的方法onChange,将改变的值传给父组件,在父组件中将值赋值给place

    
    

         

  • 相关阅读:
    程序编译的四个阶段
    c++的符号表的肤浅认识
    git高级用法之cheery-pick
    rust 使用国内镜像,快速安装方法
    protobuf 的enum与string转换
    c++ 获取GMT 时间和字符串
    proto3 不支持内建类型的非空判断即 hasXXX
    cmake 中的 compile_commands.json 文件
    整数划分问题(记忆化搜索和DP方法)
    查找系列合集-二分查找
  • 原文地址:https://www.cnblogs.com/lvlvlv/p/11642115.html
Copyright © 2020-2023  润新知