我想在淘汰赛中复制这个逻辑..有什么建议吗?当前代码是剃刀,我将其转换为使用knockoutJS
其中ItemStatus.Active在c#(后端)的枚举中为0
@foreach (var employee in Employees.Where(x => x.Status == ItemStatus.Active))
{
<div class="someclass”>
<span class="label">Name:</span>
<span class="value">@employee.Name</span>
</div>
}
我如何在淘汰赛中复制这种逻辑,即我只想展示目前活跃或就业的员工
谢谢
答案 0 :(得分:1)
淘汰赛的SELECT f.proname, f.prosrc, f.probin -- trouble: f.prosrc and f.probin are empty
FROM pg_proc f;
或computed
可以解决问题。
尝试像这样的虚拟
pureComputed
和这样的标记
function VM(data) {
var self = this;
//.............
self.filter = ko.observable(null);
self.data = ko.observableArray(data)
self.filteredData = ko.pureComputed(function(){
return self.data().filter(function(x){
return !self.filter() || x.status == self.filter();
})
});
self.setFilter = function(filter) {
self.filter(filter || null);
}
//.........................
}
这个小测试应用程序可以像这样初始化
<ul data-bind="foreach:filteredData">
<li data-bind="text:$data.value">
</li>
</ul>
<a href="#" data-bind="click:setFilter(null)">all</a>
<a href="#" data-bind="click:setFilter('active')">active</a>
<a href="#" data-bind="click:setFilter('archived')">archived</a>
请注意,如果您的数据数组是静态的(在页面生命周期期间不会发生任何更改),您可以从VM中省略var someData = [
{status: 'active', value: 'some active'},
{status: 'active', value: 'another active'},
{status: 'archived', value: 'some archived'},
{status: 'archived', value: 'another archived'},
];
var vm = new VM(someData);
ko.applyBindings(vm);
vm.setFilter(null);
可观察数组,而只需使用self.data
答案 1 :(得分:0)
我会在我的视图模型中寻找一个数组滤镜来解决这个问题,其中包括:
var self = this;
self.Employees = ko.observableArray();
ko.uitls.arrayfilter(self.Employees(), function(e) { return e.Status == 'Active' });
通过将数组过滤器运用到计算函数并将其绑定到div,让它变得非常嗖嗖,有很多关于knockout网站的文档/教程可以帮助你解决这个问题。