请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

清空input框value值

看了其他同学提的问题
您的回答 inputValue.value = ""
inputValue在addItemToList中,没有这个变量

正在回答 回答被采纳积分+3

5回答

慕少3567675 2021-04-15 11:42:32
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>lesson</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="root">
      <div>
        <input v-model="inputValue" />
        <button @click="addItemToList">添加</button>
      </div>
      <ul>
        <li v-for="(item,index) in list" :key="index">{{item}}</li>
      </ul>
    </div>
  </body>
  <script>
    const listRelativeEffect = (inputValue, resetInputValue) => {
      const { reactive } = Vue;
      const list = reactive([]);
      const addItemToList = () => {
        list.push(inputValue.value);
        resetInputValue();
      };
      return { list, addItemToList };
    };

    const inputRelativeEffect = () => {
      const { ref } = Vue;
      const inputValue = ref("");
      const resetInputValue = () => {
        inputValue.value = "";
      };
      return { inputValue, resetInputValue };
    };

    const app = Vue.createApp({
      setup() {
        const { inputValue, resetInputValue } = inputRelativeEffect();
        const { list, addItemToList } = listRelativeEffect(
          inputValue,
          resetInputValue
        );

        return {
          list,
          addItemToList,
          inputValue,
        };
      },
    });

    const vm = app.mount("#root");
  </script>
</html>


参考诺亚诺亚同学的问答,改成这样的话可以实现点击按钮添加数据到列表后,清空input框的内容。

2 回复 有任何疑惑可以回复我~
GalenT 2023-05-28 23:53:28

导出一个resetInputValue,然后再将resetInputValue函数传入listRelativeEffect函数中

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../vue.global.js"></script>
</head>

<body>
    <div id="root"></div>
    <script>
        const listRelativeEffect = () => {
            const { reactive } = Vue;
            const list = reactive([]);
            const addItemToList = (item, resetInputValue) => {
                list.push(item);
                resetInputValue();
            };
            return { list, addItemToList }
        }

        const inputRelativeEffect = () => {
            const { ref } = Vue;
            const inputValue = ref('');
            const handleInputValueChange = (e) => {
                inputValue.value = e.target.value;
            };
            const resetInputValue = () => {
                inputValue.value = "";
            }
            return { inputValue, handleInputValueChange, resetInputValue };
        }

        const app = Vue.createApp({
            setup() {
                const { list, addItemToList } = listRelativeEffect();
                const { inputValue, handleInputValueChange, resetInputValue } = inputRelativeEffect();
                return { list, addItemToList, inputValue, handleInputValueChange, resetInputValue }
            },

            template: `
            <div>
                
                <div>
                    <div>{{inputValue}}</div>
                    <input :value="inputValue" @input="handleInputValueChange"/>
                    <button @click="addItemToList(inputValue, resetInputValue)">添加</button>
                </div>
                <div>
                    <ul>
                        <li v-for="item in list" :key="item">{{item}}</li> 
                    </ul>
                </div>
            </div>
            `
        });
        const vm = app.mount('#root');
    </script>
</body>

</html>


1 回复 有任何疑惑可以回复我~
avisionav 2021-08-28 14:30:11

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script src="https://unpkg.com/vue@next" type="text/javascript" charset="utf-8"></script>

</head>

<body>

<div id="root"></div>

</body>

</html>

<script>


//封装对List的操作

const listEffect=()=>{

const {reactive}=Vue;

const list=reactive([1,2]);

const addItem=(inputValue)=>{

list.push(inputValue)

}

return {

list,

addItem,

}

}

const inputEffect=()=>{

const {ref}=Vue;

const inputValue=ref('123');

const resetValue=()=>{

inputValue.value=""

}

return {

inputValue,

resetValue,

}

}

const app=Vue.createApp({

setup(){

//流程调度中转

const {inputValue,resetValue} = inputEffect()

const {list, addItem} = listEffect() //获取函数执行的返回值

const addItemToList=()=>{

addItem(inputValue.value)//先添加

resetValue()//再清空

}

return {

list, 

addItemToList,

inputValue,

}

},

template:`

<div>

<div>

<input v-model="inputValue" />

<button @click="addItemToList">添加</button>

</div>

<ul>

<li v-for="(item,index) in list" :key="index">{{item}}</li>

</ul>

</div>

`

})

const vm=app.mount("#root")

</script>



0 回复 有任何疑惑可以回复我~
慕少3567675 2021-04-15 11:20:27

我也遇到这样的问题,不知道怎样清空input框value值。因为addItemToList函数里面不知道怎样获取响应式的inputValue。

0 回复 有任何疑惑可以回复我~
Dell 2021-03-27 20:32:22

嗯?同学你是帮我做个解答是吗?

0 回复 有任何疑惑可以回复我~
  • 按照老师的代码,将list和input的逻辑分开写之后。在点击button的时候,将input的数据push进list,但是不知道怎样才能清空input的数据。因为在addItemToList函数里面无法获取响应式的inputValue,只有传进来的item参数。
    回复 有任何疑惑可以回复我~ 2021-04-15 11:14:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信