使用ko.mapping插件时,IF绑定未按预期工作
IF binding not working as expected when using ko.mapping plugin
我创建了两个JSFiddle示例,用于使用knockout.js.映射数据
(1)http://jsfiddle.net/9nn2qpp8/没有ko.mapping插件
var ViewModel = function() {
var self = this;
this.entries = [
{ name: "one", type: "file" },
{ name: "two", type: "folder" },
{ name: "three", type: "file" }
];
};
ko.applyBindings(new ViewModel());
(2)http://jsfiddle.net/q49vfy6q/使用ko.mapping
var data = {entries: [
{ name: "one", type: "file" },
{ name: "two", type: "folder" },
{ name: "three", type: "file" }
]};
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
为什么(2)在if绑定的评估方面与(1)的工作方式不同?
映射插件会自动将所有内容包装为可观察对象-您需要在if
绑定中这样对待它们:
<!-- ko if: type() !== "file" -->
而不是:
<!-- ko if: type !== "file" -->
工作小提琴
因为当您使用映射时,您可以将每个属性转换为可观察的属性。
每个可观察的属性都是一个函数,因此您需要执行该函数来返回里面的值。
请在此处查看它的工作情况:http://jsfiddle.net/q49vfy6q/1/
<table>
<tbody data-bind="foreach: entries()">
<tr>
<td>
<!-- ko if: type() === "file" -->
实际上根本不需要使用mapping
。您可以将data
直接传递到applyBindings()
:
var data = {entries: [
{ name: "one", type: "file" },
{ name: "two", type: "folder" },
{ name: "three", type: "file" }
]};
ko.applyBindings(data);
JSFiddle演示。
相关文章:
- OnsenUI AngularJS数据绑定无法正常工作
- iOS鼠标中心绑定只工作一次
- ng绑定html不工作
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- 双向绑定不会;我不在ES6工作
- 与未在发布模式下工作的子目录和区域绑定
- 如何使绑定提交始终有效?它'It’他不时地工作
- 与 Angular 1.5 的单向数据绑定类似于双向工作
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 绑定'滚动'不会'我在IE 11中不工作
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- 如何使Select2自动完成工作内foreach绑定的淘汰
- 从服务器端将属性绑定到套接字对象;似乎不能正常工作
- 角度双向绑定未按预期工作
- 如果快速切换,ng类在绑定变量上不能很好地工作,这可能吗
- 自定义绑定在KnockoutJS 3.0中不再工作
- Polymer v1.3.1数据绑定无论是否使用带有重复模板和json数组的iron ajax都无法工作
- jQuery绑定ajax:成功地不在rails3app中为新创建的(ajax)项工作
- 新的google.maps.LatLngBounds()绑定扩展和中心工作随机