我是淘汰赛的新手,我正试图从MVC ViewModel绑定转移。
我有一个复杂的模型:
SearchStudentsModel,它有2个属性
请注意,集合的长度不等于整体的数量。
我需要实现搜索功能 学生将拥有所有常规属性和IsActive指标。 我使用ul和li标签对数据进行数据绑定。
搜索屏幕应便于用户使用指示器(打开和关闭)标记活动标志,并立即将数据保存在数据库中。
我提到的所有例子都只谈到一个级别的模型。我有一个SearchStudent模型,我有一个学生集合。
如何对这个模型层次结构进行绑定?
答案 0 :(得分:0)
我有重构你的jsFiddle。希望你现在能更好地了解knockoutJS。这不是你的整个页面/淘汰赛,但我认为这个片段你的问题可以解决。
加价:
<button id="searchEmployees" type="button" data-bind="click: search">Search</button>
<li data-bind="foreach: Employees">
ID: <span data-bind="text: Id"></span><br/>
Name: <span data-bind="text: Name"></span><br/>
Active: <span data-bind="click: ToggleActivation, text: IsActive"></span> <-- click<br/>
</li>
<span data-bind="text: Employees().length"></span> of
<span data-bind="text: AllEmployees().length"></span>
js / viewmodel
function Employee(id, name, isactive){
var self = this;
self.IsActive = ko.observable(isactive);
self.Id = ko.observable(id);
self.Name = ko.observable(name);
self.ToggleActivation = function () {
if(self.IsActive() === true)
self.IsActive(false);
else
self.IsActive(true);
};
}
var searchEmployeeViewModel = function () {
var self = this;
self.Employees = ko.observableArray([]);
self.AllEmployees = ko.observableArray([]);
self.search = function () {
//Ajax call to populate Employees - foreach on onsuccess
var employee1 = new Employee(2, "Jane Doe", true);
var employee2 = new Employee(3, "Kyle Doe", false);
var employee3 = new Employee(4, "Tyra Doe", false);
var employee = new Employee(1, "John Doe", true);
self.AllEmployees.push(employee);
self.AllEmployees.push(employee1);
self.AllEmployees.push(employee2);
self.AllEmployees.push(employee3);
self.Employees.push(employee);
}
}
$(document).ready(function () {
ko.applyBindings(new searchEmployeeViewModel());
});
或者,如果您不喜欢在此处阅读我的代码,只需使用 my jsFiddle;)