【发布时间】:2014-06-29 07:00:09
【问题描述】:
我看过这个: http://knockoutjs.com/documentation/extenders.html
问题是我使用 fromJs 来创建我的视图模型,所以我的可观察者已经存在。我认为我可以执行以下操作来添加扩展器:
var data = result.Data;
if (!window.vmRealTimeActivity) {
window.vmRealTimeActivity = ko.mapping.fromJS(data, mappingKeys);
ko.applyBindings(vmRealTimeActivity, $('#second-btm')[0]);
} else {
ko.mapping.fromJS(data, vmRealTimeActivity);
}
vmRealTimeActivity.MyExistingObservable.extend({ numeric: null });
vmRealTimeActivity.MyExistingObservable(9999); // doesn't call numeric extender
我的扩展器在第一次附加扩展器时被调用,但在尝试更改值之后不会。
我阅读了另一篇 SO 帖子,其中指出 .extend() 创建了一个新的可观察对象,因此您必须这样做,但这也不起作用:
vmRealTimeActivity.MyExistingObservable = vmRealTimeActivity.MyExistingObservable.extend({ numeric: null });
除了没有第二次调用我的格式化程序之外,该值开始返回 NaN。
如何以正确的方式将扩展器附加到现有的 observable?
【问题讨论】: