如何进行复杂模型剔除的数据绑定
how to do data-bind for complex model knockout
我是一个新手,我正试图摆脱MVC ViewModel绑定。
我有一个复杂的模型:
SearchStudentsModel具有两个属性
- 学生集合(学生子集)
- 学生总数
请注意,集合的长度并不等于总数。
我需要实现搜索功能学生将拥有所有常规属性和IsActive指示符。我使用ul和li标签来对细节进行数据绑定。
搜索屏幕应便于用户用指示器(打开和关闭)标记活动标志,并应立即将数据保存在数据库中。
我提到的所有例子都只涉及一个级别的模型。我有一个SearchStudent模型,其中我有一组学生。
这种模型层次结构的绑定应该如何?
我已经重构了您的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());
});
如果您不喜欢在这里阅读我的代码,也可以简单地使用我的jsFiddle;)
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 挖空、视图模型位于其他对象和数据绑定中
- angularJS单向数据绑定和模型编辑与ng重复
- 显示具有 MVC 数据绑定视图模型 ASP.NET JQuery 对话框的最佳方式
- 如何将视图数据绑定到模型属性
- 使用 KnockoutJS,如何将数据绑定到来自同一视图模型的 2 个不同的<选择>标签
- 如何进行复杂模型剔除的数据绑定
- 我的数据绑定有效,但我的输入ng模型是't更新时更新
- 如何指定视图'使用多个视图模型时的数据绑定上下文
- 钛合金数据绑定:如何从点击视图中获取当前模型
- 数据绑定在视图模型上不起作用
- 如何在Angularjs中停止ng模型的双向数据绑定
- 如何将服务器生成的html数据绑定到knockout模型属性
- Angular数据绑定没有更新正确的模型范围
- 删除映射和foreach数据绑定表上的按钮,缺少对视图模型的引用
- 数据绑定=“click"不能使用嵌套的淘汰视图模型
- 如何在不使用html包装的情况下将视图模型数据绑定到Kendo DropDownlist
- 模型视图控制器-AngularJS中是否可以在经典的javascript函数中使用数据绑定
- Angular数据绑定-手动设置模型的值
- Emberjs:正确绑定模型/控制器/视图与夹具数据