敲出$parent点击click事件很好,但是结果对象的属性没有定义
Knock out $parent hits click event fine, but resulting object's properties are undefined
在下面的代码中,两个按钮都触发了正确的单击处理程序。但是,当单击第二个按钮时,该对象的所有属性都未定义!$parent是此处使用的正确引用吗?还有别的办法吗?
<a class="btn rc" href="#" data-bind="click: goClick">This items works.</a>
<div class="criteria" data-bind="with: profileCriteria">
<a class="btn rc" href="#" data-bind="click: $parent.goClick">This doesn't relaly work</a>
</div>
click
处理程序的第一个参数是当前数据上下文。因此,在您第一次使用click: goClick
时,参数将是您所期望的主要对象。
但是当你在data-bind="with: profileCriteria"
内部时,当前的数据上下文是profileCriteria
对象,所以它被传递给你的点击处理程序。因此,KO不会自动计算出您在这里需要将$parent
作为参数。
解决方案是手动将$parent
传递给您的函数(请参阅文档:访问事件对象,或传递更多参数一节):
<a class="btn rc" href="#"
data-bind="click: function() { return $parent.goClick($parent); }">
我认为更清晰更正确的方法是
<a class="btn rc" href="#"
data-bind="click: $parent.goClick.bind($parent)">
这将导致的结果是this
的上下文将是父项,函数的参数将是单击项的数据上下文(profileCriteria)
相关文章:
- 对象拟合:获取结果尺寸
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- JQuery Deferred Ajax,将结果保存在调用对象中
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 返回带有筛选结果的新JSON对象
- 使用函数for循环遍历对象以更改值,然后返回结果
- 为什么纬度结果对象从谷歌地图 API 更改
- 意外结果,在 ASP.Net 中解析 JSON 对象的数组
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- 用逗号分隔返回结果中的对象
- jQuery 循环 JSON 结果,对象作为值
- 正在调用对象中设置的匿名函数,但未得到预期结果
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 剑道角's自动完成在结果中显示对象
- 使用lodash'扩展JS对象实例;s的extend方法会导致奇怪的结果
- 从 $.post() 获取 JSON 对象结果
- 使用 JavaScript 将多个对象结果集的数组合并到单个数组中
- 有选择地返回JSON对象结果
- Json字符串javascript对象结果不匹配
- 提取 JSON 对象结果的某些部分