gpt4 book ai didi

javascript - 将模型 bool 值发送到 js 函数会导致 onchange 函数引用

转载 作者:行者123 更新时间:2023-11-27 23:38:24 25 4
gpt4 key购买 nike

我在复选框类型的输入标记中有一个 onchange 事件,该事件调用 JavaScript 函数并将三个参数从模型传递到函数:

<input type="checkbox" ... onchange="changeRow('@Model.Id', '@Model.Type', @Model.AwaitingApproval)" ...

在changeRow javascript函数中,前两个值被正确报告,但第三个参数( bool 类型)是对onchange函数的引用。检查该值时,我可以看到 onchange 函数签名,它表明它是一个函数。

这是一个带有一些 jquery 的普通 MVC 应用程序,数据通过来自 Controller 的 ajax 调用进行通信, Controller 通过模型提供数据。

如果我将代码更改为以下内容:

<label>@Model.AwaitingApproval <input type="checkbox" ... onchange="changeRow('@Model.Id', '@Model.Type', @Model.AwaitingApproval)" ... </label>

然后,值 TRUE 将打印在复选框之前的页面上。所以,证明模型值是正确的,可以引用。

任何关于可能导致 js 函数中奇怪行为的想法将不胜感激!(或者对此行为的解释,如果这是预期的并且我不明白为什么会发生这种情况。)

Javascript函数:

function changeRow(Id, Type, AwaitingApproval)
{
if (!AwaitingApproval) (*This is where I first detected the problem*)
{
...
}
}

javascript 函数没有什么“特殊”之处,它只是接收参数,然后根据值进行处理。Id 参数具有正确的整数值,类型字段具有正确的字符串值,但 AwaitingApproval 参数具有以下内容:

function onchange(event)
{
changeRow('7334512', 'targeted', onchange)
}

这基本上是对我首先分配给 onchange 事件的函数的引用,你猜对了,第三个参数中的 onchange 是对同一函数的另一个引用,导致在同样的方式。

最佳答案

随着更多的尝试,我想通过将第三个参数包含在代码块中来尝试一下:

onchange="changeRow('@Model.Id', '@Model.Type', '@{ @Model.AwaitingApproval }')"

然后会产生存储在属性中的正确 bool 值。

我根本不理解这种行为,如果有人能解释一下这一点,我会很高兴。

Stephen Muecke建议的更清洁方式

onchange="changeRow('@Model.Id', '@Model.Type', '@Model.AwaitingApproval.ToString()')"

记住引号,然后在 JavaScript 函数中测试字符串值('True'/'False')非常重要。

关于javascript - 将模型 bool 值发送到 js 函数会导致 onchange 函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com