knockout.js - 为什么在表行中使用 data-bind ='if' 时会出现 Knockout js 的 ReferenceError
问题描述
我有点困惑。当我尝试在 td 标记中调用“if:(showActiveOnly)”时,我收到“ReferenceError: showActiveOnly is not defined”,但在它下面我立即放置了 ap 标记作为测试并将其数据绑定设置为“文本:showActiveOnly",这是读取查找。我错过了什么?
var viewmodel = {
userList:UserListViewModel(users),
showActiveOnly : ko.observable(true)
}
ko.applyBindings(viewmodel);
<div>
<div>
<input type="checkbox" data-bind="checked: showActiveOnly" /><p data-bind="text:$data.showActiveOnly"></p>
<table >
<thead>
<tr data-bind="click: sortTable">
<th>
User Name
</th>
</tr>
</thead>
<tbody data-bind="foreach: currentPage ">
<tr data-bind="if:(showActiveOnly)">
<p data-bind="text:showActiveOnly"></p>
<td data-bind="text: Username" style="width: 10%;"></td>
</tr>
</tbody>
</table>
错误:未捕获错误:无法解析绑定。消息:ReferenceError:未定义 showActiveOnly;绑定值:if(showActiveOnly)
解决方案
尝试这个:
<tbody data-bind="foreach: currentPage ">
<tr data-bind="if: $parent.showActiveOnly">
<p data-bind="text:showActiveOnly"></p>
<td data-bind="text: Username" style="width: 10%;"></td>
</tr>
</tbody>
由于您使用的是 foreach,因此您正在更改包含绑定的上下文。这就是为什么您必须使用 $parent 或 $root 的原因。在knockoutJS 站点搜索knockout 数据上下文信息,它包含每一个小细节!
推荐阅读
- dart - 如何在飞镖中值部分的地图数据结构中分配变量?
- forms - 按钮打开表格
- python - 我尝试使用带有 OpenAI gym Environment 的 pytorch 实现 DQN。但是我的episode_rewardis减少了。为什么?
- c# - 如何读取和存储以多种方式分离的多个数据?
- python - 为什么检查单词是否是字典中的键不起作用?
- c++ - 如何从可变参数模板包和使用相同模板类型的对象列表中初始化向量元组?
- c++ - 使用枚举值和可变参数模板制作 constexpr 二进制掩码
- node.js - 串流并保存
- c - 从C中的字符串中获取由空格和制表符分隔的子字符串
- javascript - 在闪亮的应用程序中的两个绘图中添加一个全屏模式按钮以重置为正常模式