挖空添加计算中断可观察数组
Knockout adding computed breaks observable array
嗨,我正在尝试使用计算值来制作可观察数组的过滤版本,如此处的示例 http://knockoutjs.com/documentation/fn.html(在底部)。
对于我有的html
<select width="50px" data-bind="options: $root.resources, optionsText: 'Name'"></select>
<select width="50px" data-bind="options: $root.available, optionsText: 'Name'"></select>
我的视图模型看起来像这样:
var viewModel = function() {
var self = this;
self.resources = ko.observableArray([{Name: "Anna",Available: true}, {Name: "Bert", Available: false}]);
self.getFilteredResources = function (isAvailable) {
var all = self.resources(), results = [];
var resource;
for (resource in all){
if (resource.Available() === isAvailable){
results.push(resource);
}
}
return results;
};
//self.available = ko.computed(function() { self.getFilteredResources( true);}, this);
};
ko.applyBindings(new viewModel());
您还可以在此处查看代码 http://jsfiddle.net/patrickhastings/eCtFY/1/
就目前而言,输出是一个带有安娜和伯特的下拉菜单和一个空的,这很好。
当我取消注释该行以声明 self.available 而不是第二个下拉列表填充 Anna 时,我得到了两个空下拉列表。帮助 请告诉我我在哪里很笨。
这个有几个小问题:
您正在调用resource.Available()
并且Available
不是可观察的,因此您只需要检查resource.Available === isAvailable
。
此外,计算的可观察量需要return
self.getFilteredResources
的结果
执行for resource in all
将为你提供索引,而不是资源本身。
我会推荐这样的东西:http://jsfiddle.net/rniemeyer/jCYT7/
相关文章:
- knockoutjs可观察数组
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 如何使用敲除映射将空值映射到空的可观察数组
- 以不同的方式对相同的可观察数组进行排序
- 如何在 Knockout.js 中更新可观察数组后立即使用 DOM 容器
- Knockout.js:如何根据可观察数组中的更改更改值
- 使用挖空.js如何刷新 Select 元素中的可观察数组
- 更新挖空中可观察数组中项目的属性
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- AngularJS:观察数组属性
- 对可观察数组foreach的更新删除了格式化knockoutjs
- 当通过Ajax成功回调更新可观察数组时,启用绑定中断
- 如何获取复选框值并将其插入到挖空中的可观察数组中
- 剔除不更新辅助表的可观察数组
- 如何让Knockout可观察数组与jQuery对话框一起工作
- 更改可观察数组会更改自定义绑定处理程序knockoutjs的可见性
- 正在更新Knockoutjs可观察数组项
- Knockout,无法解析空可观察数组中的绑定错误