【发布时间】:2014-04-29 21:06:33
【问题描述】:
我发现可观察的扩展器与剔除映射相结合的一些奇怪行为。我已使用示例扩展器对文档中的数字进行舍入。
为了让它通过淘汰映射运行,我通过覆盖“create”字段来扩展 observable。相比之下,我直接在视图模型中创建了另一个 observable。
当将这两个绑定到输入字段时,它们的行为几乎相同(例如,当您在 'a' 中时,它将被更正为 0),除了这种特殊情况: 当旧值为 0 并且您再次输入“a”时,它不会在映射的 observable 上更正。
function Model() {
this.myNumberOne = 0;
}
function AppViewModel(model) {
ko.mapping.fromJS(model, {
'myNumberOne': {
create: function(options) {
return ko.observable(options.data).extend({numeric: 2});
}
}
}, this);
this.myNumberTwo = ko.observable(0).extend({numeric: 2});
}
var vm = new AppViewModel(new Model());
你可以在这里测试它:http://jsfiddle.net/3S9xG/
谁能告诉我为什么他们的行为不一样以及如何解决?
提前致谢
费舍曼
【问题讨论】:
标签: knockout.js knockout-mapping-plugin knockout-validation