KnockoutJS:将Observable属性和函数添加到映射生成的ObservableArray中的对象中

StackOverflow https://stackoverflow.com/questions/8401799

我是 KnockoutJS 的新手,我一直在尝试向生成的对象添加其他属性和方法在ko.observableArray()插件创建的mapping中。


这是我的专长:

有帮助吗?

解决方案

您可以考虑几个选项。

-一种方法是使用 create回调来控制“用户创建对象。您可以自己定义可观察对象并添加额外的功能,也可以在单个用户对象上调用映射插件,然后添加额外的功能。

应该是这样的: http://jsfiddle.net/rniemeyer/fkVaK/

-否则,您可以将“ toggle”功能放置在viewModel上,然后将“ user”对象传递给它。

使用1.3的一种不错的方法是将ko.dataFor与jQuery的live / delegate / on事件委托功能一起使用。将会是: http://jsfiddle.net/rniemeyer/FkjNr/ 通用标签

如果您不想使用事件委托,则可以使用匿名函数直接传递该项目,例如: http://jsfiddle.net/rniemeyer/GpQtN/

编辑:从2.0版开始,使用单击/事件绑定时,当前数据会自动传递到处理程序,因此您可以执行以下操作: 通用标签

其他提示

这是我同时使用您和Ryan的答案提出的...似乎很有效。请留下反馈,因为这是一个好方法,因为我是Knockout的新手,并对自己感到好奇。

JS: 通用标签

DOM: 通用标签

我已经找到了一种方法,但是这意味着一旦创建了对象,就可以遍历数组中的对象。我更喜欢一种无需额外循环即可达到相同结果的方法。>

编辑就像尼迈尔(RP Niemeyer)的建议一样!; o)

无论如何,向现有对象添加属性的一种方法是使用 jQueryextend()组合对象。

首先,在新对象中声明额外的属性和功能: 通用标签

然后,在调用ko.mapping.fromJS()之后,但在调用ko.applyBindings()之前,循环遍历所生成数组中的对象并扩展它们: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top