以不正确的顺序从绑定中删除2.0参数
Knockout 2.0 parameters from bind in incorrect order?
Knockout 2.0使用此数据绑定:
data-bind="click: $root.deleteSomeEntity.bind($data, $parent)"
在Knockout视图模型JavaScript中中的第一个参数
self.deleteSomeEntity = function (data, parent) {
// perform deletion
}
似乎是父项而不是数据。
这种行为是有原因的,还是我遗漏了什么?
当您调用bind
时,第一个参数将是this
的值。因此,在您的调用中,this
将是$data
,第一个参数将是$parent
。
如果在这种情况下$root
是$parent
,那么您可以执行以下操作:
$root.deleteSomeEntity.bind($root)
KO将传递数据作为第一个参数,并且this
将被设置为$root
。
如果$parent
不是$root
(并且您可能不想依赖于this
与根上方法中的$root
是不同的对象),那么您可以执行以下操作:
$root.deleteSomeEntity.bind($root, $data, $parent)
否则,肯定有一些方法可以确保在视图模型中具有正确的this
。这取决于你的结构。
为什么要使用bind()
?默认情况下,如果您只将javascript函数的名称写为点击事件,Knockout将传递$data
作为第一个参数,并将事件作为第二个参数。
http://knockoutjs.com/documentation/click-binding.html(注1&2)
既然你可以简单地做到这一点,为什么还要麻烦bind()
呢:
data-bind="click: function() {$root.deleteSomeEntity($data, $parent)}"
相关文章:
- 删除处于抽象状态的参数angular
- JS:删除带有接受参数的处理程序的事件侦听器
- 谷歌应用脚本中的 UrlFetchApp.fetch 删除 url 参数
- getJSON()-如何删除数据参数前面的AND符号
- 可以't获取此函数以删除基于javaScript中后续参数的特定元素
- 使用Javascript从url中删除参数
- 使用正则表达式删除网址参数
- 通过删除一个参数及其值来清理 URL
- 从 JavaScript 中的参数中删除参数
- 从请求 URL 中删除参数
- 从查询字符串中删除参数而不重新加载
- 以不正确的顺序从绑定中删除2.0参数
- 使用jQuery或JavaScript从url中删除参数
- 从url中删除参数
- 如何在URL中删除参数并在地址栏中显示它,而不会在Javascript中引起重定向
- 从url中删除参数无效
- 从URL中删除参数
- 不能使用javascript删除参数
- 在重定向后从url中删除参数
- 如何从url查询中删除参数