在我的ViewModel中,我正在处理3种不同的模型可观察对象。
一切正常,除了我有一个可观察的地方,我试图通知用户,输入(或某些事件)失去焦点,该值应该是一个整数,如果不是。我还计划使用相同的逻辑发送ajax请求。
我之前从未尝试使用过空的observable,所以我有点困惑,如果我应该绑定一个事件处理程序或者我应该如何处理它。
var deferredAccount = function() {
var self = this;
self.Id = ko.observable();
self.accountNumber = ko.observable();
self.participantId = ko.observable();
self.taxPercentage = ko.observable();
}
newAccount = ko.observable();
newAccount(new model.DeferredAccount()); <-- to the View
<form class="form-horizontal" data-bind="with: newAccount">
<label class=" col-sm-5 control-label">Account Number: </label>
<input data-bind="value: accountNumber" class="col-sm-3 form-control" type="text" />
<label class=" col-sm-5 control-label">Tax Percentage: </label>
<input id="percent" data-bind="value: taxPercentage" class="col-sm-3 form-control" type="text" min="0" max="85" title="Enter Percentage in Decimal Format"/>
</form>
对于taxPercentage
,我想在lostFocus
或某些点验证该字段。我认为因为我不习惯处理这么多不同的动作,所以我对如何访问适当的可观察对象感到困惑。
答案 0 :(得分:1)
你可能正在寻找扩展器。扩展程序是您在视图和可观察对象之间放置的过滤器。
淘汰赛文档很好地描述了这个过程,甚至可以简单地使用this railscasts episode:
var deferredAccount = function() {
var self = this;
self.Id = ko.observable();
self.accountNumber = ko.observable();
self.participantId = ko.observable();
self.taxPercentage = ko.observable().extend({numeric: 0});
}
和
<form class="form-horizontal" data-bind="with: newAccount">
<label class="col-sm-5 control-label">Account Number: </label>
<input data-bind="value: accountNumber" class="col-sm-3 form-control" type="text" />
<label class=" col-sm-5 control-label">Tax Percentage: </label>
<input id="percent" data-bind="value: taxPercentage" class="col-sm-3 form-control" type="text" min="0" max="85" title="Enter Percentage in Decimal Format"/>
</form>
无需特殊事件处理。
要强制执行最小值和最大值,请查看a fully implemented extender for rounding numbers。