假设我们有以下布局:
<tbody data-bind="foreach: items">
<tr>
<td data-bind="with: $parent.inplaceEditorVm">
<span data-bind="text: $parent.$data.OwnrPrefs"></span>
</td>
</tr>
</tbody>
我们如何在foreach
绑定的上下文中访问当前with
项的属性?
即。在上面的示例中,我们需要在data-bind
表达式中为span
元素写入什么来获取当前OwnrPrefs
项的foreach
的值?
当我在上面的示例中使用$parent.$data.OwnrPrefs
时,它会抛出:
TypeError:无法获取属性&#39; OwnrPrefs&#39;未定义或null 参考
当我尝试使用$data.OwnrPrefs
时,此表达式的值将解析为undefined
,因为$data
范围内的with
绑定是inplaceEditorVm
对象,而不是当前的foreach
项。
答案 0 :(得分:3)
with
和foreach
等绑定会创建新的binding contexts。外部/原始上下文,即with
之外的上下文,可以$parent
获取 - 这是$parent
引用的内容,它与您的viewmodel没有(直接)相关结构,而是页面上的绑定。
在您的情况下,您可以这样做:
<tbody data-bind="foreach: items">
<tr>
<td data-bind="with: $parent.inplaceEditorVm">
<span data-bind="text: $parent.OwnrPrefs"></span>
</td>
</tr>
</tbody>