登录 立即注册

首页 > 绿虎论坛 > 电脑 > 讨论/求助 (发帖)

标题: 问一个 VueJs 的问题

作者: @Ta

时间: 2022-10-29发布,2022-10-29修改

点击: 13197

我想这么写 不行

<div v-for="item of list">
<div @click="PromptSetValue(item.it)"></div>


function PromptSetValue(e){
    var text = prompt();
    e = text;
}


需要这么写 才可以
demo : https://codepen.io/tsymq-live/pen/vYrOPYm
<div v-for="item of list">
<div @click="PromptSetValue(item)"></div>


function PromptSetValue(e){
    var text = prompt();
    e.it = text;
}

[隐藏样式|查看源码]


『回复列表(10|隐藏机器人聊天)』

1.

@淡然,因为 js 没法引用对象的键?

(/@Ta/2022-10-29 12:23//)

2. @无名啊, 应该是没办法引用对象的值,我想找到其它的写法
(/@Ta/2022-10-29 12:29//)

3.

@淡然,下面的写法有何不妥吗?你原始问题是啥?

(/@Ta/2022-10-29 12:34//)

4. @无名啊, 这样这个方法只能改变it的值,这个方法我需要公用
(/@Ta/2022-10-29 12:36//)

5.

@淡然function PromptSetValue(e, key)

(/@Ta/2022-10-29 12:38//)

6. @无名啊,这算一个办法吧,但是还不够友好
(/@Ta/2022-10-29 12:43//)

7.

@淡然,回调 PromptSetValue(v => item.it = v) 或 异步 PromptSetValue().then(v => item.it = v)

(/@Ta/2022-10-29 12:58//)

8.
PromptSetValue(list, 'it') 

function PromptSetValue(list, key){
    var text = prompt();
    list[key]= text;
}

红米K30 Pro(变焦版)

(/@Ta/2022-10-29 16:50//)

9.

这个和 Vuejs 无关,和 js 引用类型传值有关系
小米MIX2s(白)

(/@Ta/2022-10-31 16:34//)

10.

按值传递时,函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。
按引用传递,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。

所以当你传递 item.it 时,获得的是一个基本类型值的拷贝副本。而当你传递 item 时,获得的是 item 对象的引用。

这个应该可以回答你的疑惑:
JS基础之传参(值传递、对象传递)

(/@Ta/2022-10-31 22:39//)

回复需要登录

11月23日 12:50 星期六

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1