【发布时间】:2014-01-02 10:17:33
【问题描述】:
我正在使用这个插件https://github.com/ericmbarnard/Knockout-Validation,我正在尝试验证一个动态加载的对象。
Javascript:
function VM() {
var self = this;
// This is a static observable, just to ensure that basic validation works fine.
self.static = ko.observable();
self.static.extend({required: true});
// This is the observable that will be updated to my model instance.
self.person = ko.observable({});
// This is an handler for manual trigger.
// I'm not even sure this is needed.
self.a = function(){
self.errors.showAllMessages();
self.staticErrors.showAllMessages();
}
// Here i'm loading current person from somewhere, i.e. a rest service.
self.load = function() {
// Update observable
self.person(new Model());
// Define validation rules
self.person().name.extend({required: true});
self.person().email.extend({required: true});
// Set person data
self.person().name('Long');
self.person().email('John');
// Set validators
self.errors = ko.validation.group(self.person);
self.staticErrors = ko.validation.group(self.static);
}
}
// Just a test model.
function Model() {
this.name = ko.observable();
this.email = ko.observable();
}
ko.validation.init();
var vm = new VM();
ko.applyBindings(vm);
标记
<ul>
<li>1. Hit "Load"</li>
<li>2. Hit "Show errors", or maunally change input data.</li>
</ul>
<button data-bind='click: load'>Load</button>
<br/>
<h1>This is working properly.</h1>
<input type='text' data-bind='value: static' />
<br/>
<h1>This is not working.</h1>
<input type='text' data-bind='value: person().name' />
<input type='text' data-bind='value: person().email' />
<br/>
<button data-bind='click: a'>Show errors</button>
小提琴 http://jsfiddle.net/qGzfr/
我该如何进行这项工作?
【问题讨论】:
-
您尝试过我提出的解决方案了吗?它们对您有用吗,还是您需要进一步的帮助?
-
@nemesv 我认为您的解决方案都非常有效。我只是在等待接受,因为有人为此开过赏金
-
哦,我没有注意到你不是盯着赏金的人......所以@artlung 你有没有尝试过我提出的解决方案?它们对您有用吗(它们在 brazorf 中效果很好),还是您需要进一步的帮助?
-
@nemesv 我提供赏金只是因为我认为这个问题需要更多关注。我最近为自己的问题使用了赏金并得到了很大的帮助,我想帮助一个 knockout.js 问题。我会将赏金应用于 OP 想要的任何帖子或任何获得最多票的问题。
-
你希望得到哪个答案?
标签: javascript knockout.js knockout-validation