Knockout.js KnockoutJS中的过滤器array
具有以下视图模型(取出部分零件) 我希望有一个项目总数的跨度:Knockout.js KnockoutJS中的过滤器array,knockout.js,Knockout.js,具有以下视图模型(取出部分零件) 我希望有一个项目总数的跨度: <span data-bind="text: openProjects().length + ' Projects'"></span> 然后我想要每个项目阶段的跨度,显示该阶段的项目数量,但我不确定如何传递参数 <span data-bind="text: filteredProjects().length"></span> // pass on for example 'Sta
<span data-bind="text: openProjects().length + ' Projects'"></span>
然后我想要每个项目阶段的跨度,显示该阶段的项目数量,但我不确定如何传递参数
<span data-bind="text: filteredProjects().length"></span> // pass on for example 'Starting'
<span data-bind="text: filteredProjects().length"></span> // pass on for example 'Running'
<span data-bind="text: filteredProjects().length"></span> // pass on for example 'Closing'
//传递例如“启动”
//传递例如“Running”
//传递例如“结束”
在
self.filteredProjects=ko.computed(function(){
中,我可以简单地对值进行硬编码并重复代码三次,但必须有更好的方法,即以某种方式将self.currentPhase与参数绑定?您的条件可能不匹配
self.filteredProjects = ko.computed(function() {
return ko.utils.arrayFilter(self.openProjects(), function(ProjectModel) {
return ProjectModel.phase == self.currentPhase();
});
});
试着这样做
return ProjectModel.phase() == self.currentPhase();
如果您知道相位是一个可观察的,您可以使用工厂方法来构建
ko.computed
self.filteredProjects = function(phase) {
// use currentPhase as default
var filterPhase = phase || self.currentPhase();
return ko.computed(function() {
return ko.utils.arrayFilter(self.openProjects(), function(ProjectModel) {
return ProjectModel.phase == filterPhase;
});
});
};
此绑定使用currentPhase
<span data-bind="text: filteredProjects()().length"></span>
这些绑定使用“启动”、“运行”和“关闭”
<span data-bind="text: filteredProjects('Starting')().length"></span>
<span data-bind="text: filteredProjects('Running')().length"></span>
<span data-bind="text: filteredProjects('Closing')().length"></span>
<span data-bind="text: filteredProjects('Starting')().length"></span>
<span data-bind="text: filteredProjects('Running')().length"></span>
<span data-bind="text: filteredProjects('Closing')().length"></span>