gpt4 book ai didi

knockout.js - 将参数传递给knockoutjs viewmodel中的函数

转载 作者:行者123 更新时间:2023-12-04 10:42:21 24 4
gpt4 key购买 nike

我有这样的 anchor 标签

<a href="#" class="btn btn-success order-btn" data-bind="attr:{'data-tiername':$data.tierName, 'data-identifier' : $parent.identifier}, click: $root.setPath.bind($data,$data.tierName, $parent.identifier)">Send values</a>

在 View 模型中
var appViewModel = {
setPath: function (data, tier, identifier) {
alert(data);
alert(tier);
alert(identifier);
},
...........
...........
}

结果是一些 knockoutjs 核心代码显示在警报消息中(可能定义 observable()、dependentObservable() 函数和 [Object object] 在使用 JSON.stringify 警报时为空)

为什么这行得通?
data-bind="attr:{'data-tiername':$data.tierName, 'data-identifier' : $parent.identifier}

但不是这个:
click: $root.setPath.bind($data,$data.tierName, $parent.identifier)

注意 tierName 是 observable(),标识符是 computed()

我在哪里可以找到有关 bind() 的更多信息?

最佳答案

由于tierNameidentifier是可观察的,你需要调用它们来访问它们的值:

click: $root.setPath.bind($data, $data.tierName(), $parent.identifier())

此外, bind() 中的第一个参数将绑定(bind)到 thissetPath ,所以我想你需要这样的东西:
click: $root.setPath.bind(/*will be bound to this*/ $root, $data, 
$data.tierName(), $parent.identifier())

最后,如果 $data本身是一个可观察的(不清楚是否来自您的代码),那么您也需要调用它:
click: $root.setPath.bind($root, $data(), $data().tierName(), $parent.identifier())

还要记住,在 ECMAScript 5 中引入了 bind,因此它可能不会出现在所有浏览器中。所以我可能会做这样的事情:
click: function(){$root.setPath($data, $data.tierName(), $parent.identifier());}

Here是关于绑定(bind)的附加信息。

关于knockout.js - 将参数传递给knockoutjs viewmodel中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418224/

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