我使用ASP.NET MVC4在表中动态生成行。我想使用Knockout将所述表的每个生成行中的复选框的enabled属性绑定到一个表达式,该表达式正在评估该列中是否存在给定数量的复选框。
以下是我的表格示例:
<table>
<tr>
<th>Happy?</th>
</tr>
@for (int z = 0; z < Model.People.Count; z++) {
<tr>
<td>@Html.CheckboxFor(Model.People[z].Happy,new{@data_bind= "checked: CheckedHappyPeople, enable: CheckedHappyPeople.length < 5 || CheckedHappyPeople"})
</td>
}
</tr>
</table>
我的VM:
function viewModel(){
var self = this;
self.CheckedHappyPeople = ko.observableArray();
}
我的模特:
public class PeopleViewModel
{
public List<People> {get; set;}
public PeopleViewModel(){}
}
public class People
{
public bool Happy {get; set;}
}
根据我的上述内容,每当我选择“快乐”复选框时,表格中的所有复选框都会被选中/取消选中。如何使用Knockout绑定到这些动态生成的元素?我应该以某种方式在ASP.NET MVC4中使用foreach
绑定吗?
答案 0 :(得分:0)
你应该尝试学习和理解Knockout而不是让别人为你编写代码。首先,你没有通过让别人为你做任何事来学习任何东西,而有两个,你不理解我为你写的代码。话虽这么说,这是其他人可能在将来寻找的解决方案,所以这就是答案。
<input data-bind="checked: Selected, enable: $parent.selections() < 5 || Selected()" type="checkbox" />
跟踪选择,如果有5个或更多选项或已经选中,则禁用该复选框,这样您仍然可以取消选中它。