这个sytax是剃刀,我正在转换为knockoutJS ..任何帮助非常赞赏..
Where ItemStatus.Active is 0 in an enum in c# ( backend )
@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)
任何JavaScript表达式都可以在Knockout绑定中使用。
所以你可以使用filter函数(ES6):
<!-- ko foreach: Employees.filter(employee => employee.Status == 0) -->
...
<!-- /ko -->
或任何其他过滤方法:
<!-- ko foreach: ko.utils.arrayFilter(Employees.filter, function(employee) { return employee.Status == 0; }) -->
...
<!-- /ko -->
答案 1 :(得分:1)
Razor运行服务器端。因此,您无法使用Employees
敲除绑定客户端的绑定。您需要将此Employees
数据移交给javascript变量,然后在页面加载后使用knockout将其绑定到客户端。
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script>
// cretes a js array of active employees
var activeEmployees = @Html.Raw(JsonConvert.SerializeObject(Employees.Where(x => x.Status == ItemStatus.Active)));
var viewModel = {
Employees: ko.observableArray(activeEmployees)
}
ko.applyBindings(viewModel);
</script>
在HTML中使用foreach
绑定(此处Employees
指的是您的淘汰赛viewModel
的属性,而不是MVC)
<!-- ko foreach: Employees -->
<div class="someclass">
<span class="label">Name:</span>
<span class="value" data-bind="text:Name"></span>
</div>
<!-- /ko -->
您还需要在@using Newtonsoft.Json
cshtml
文件的顶部添加JsonConvert