And*_*rew 17 knockout-mapping-plugin knockout.js
我是KnockoutJS的新手,我不得不尝试ko.observableArray()
在mapping
插件创建的生成对象中添加其他属性和方法.
这是我要去的地方:
Users
ko.observableArray()
用映射插件创建了它User
,到目前为止很好:o)
这是我正在尝试做的事情:
每个User
都有一个名为的属性'IsActive'
- 我想data-bind
在每个User
对象上切换此'IsActive'
属性的方法的click事件.
这个问题看起来很有希望,但是我必须在JS中声明整个View模型似乎是不必要的重复(除非我必须这样做!) - 是否可以只扩展生成的对象?
我正在考虑这些方面,其中有一种方法可以声明其他属性或方法,并让它们扩展mapping
生成的对象,但本文关注的是单个对象,而不是在生成的数组中扩展对象.
这是代码: http ://jsfiddle.net/yZkSf/2/ (尚未在JS小提琴中工作 - 但我将继续使用它并在我开始工作时更新此链接).
谢谢您的帮助
RP *_*yer 13
您可以考虑几种选择.
- 一个是使用create
回调来控制如何创建"用户"对象.您可以自己定义observable并添加额外的功能,也可以在单个用户对象上调用映射插件,然后添加额外的功能.
将是这样的:http://jsfiddle.net/rniemeyer/fkVaK/
- 否则,您可以在viewModel上放置"toggle"函数,然后将"user"对象传递给它.
1.3的一个好方法是使用ko.dataFor
类似jQuery的live/delegate/on事件委托功能.就像:http://jsfiddle.net/rniemeyer/FkjNr/
//unobtrusive event handler
$(".toggle").live("click", function() {
var user = ko.dataFor(this);
if (user) {
viewModel.toggleIsActive(user);
}
});
Run Code Online (Sandbox Code Playgroud)
如果您不想使用事件委派,则可以使用匿名函数直接传递项目,如:http://jsfiddle.net/rniemeyer/GpQtN/
编辑:从2.0开始,当使用点击/事件绑定时,当前数据会自动传递给处理程序,因此您可以这样做:
<a href="#" data-bind="click: $root.toggleIsActive"><span data-bind="text: IsActive"></span></a>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11332 次 |
最近记录: |