這與this類似,但我們希望在模型級別定義驗證邏輯,但以下內容不顯示驗證消息。在模型中使用Aurelia驗證
用戶model.js(不工作)
import {transient, inject} from 'aurelia-framework';
import {ensure} from 'aurelia-validation';
@transient()
export class UserModel {
@ensure(function(it) { it.isNotEmpty().hasLengthBetween(3,10) })
firstName = "";
constructor() {
this.firstName = "";
}
}
user.js的(不工作)
import {inject} from 'aurelia-framework';
import {Validation} from 'aurelia-validation';
import {UserModel} from 'models/user-model';
@inject(Validation, UserModel)
export class User {
constructor(validation, userModel) {
this.userModel = userModel;
this.validation = validation.on(this);
}
}
user.html(不工作)
<form role="form" validate.bind="validation">
<div class="form-group">
<label>First Name</label>
<input type="text" validate="model.firstName" value.bind="model.firstName" class="form-control" >
</div>
</form>
注意,驗證= 「model.firstName」 在user.html,這種使確認工作用的這意味着當用戶輸入有效時,我看到'has-success'類被添加到form-group div中,但當它不是有效輸入時,它不會顯示消息。 但是,如果我取出user-model.js之外的驗證邏輯並將其放在user.js中,如下所示,它工作得很好。
用戶model.js(工作)
import {transient, inject} from 'aurelia-framework';
@transient()
export class UserModel {
constructor() {
this.firstName = "";
}
}
user.js的(工作)
import {inject} from 'aurelia-framework';
import {Validation} from 'aurelia-validation';
import {UserModel} from 'models/user-model';
@inject(Validation, UserModel)
export class User {
constructor(validation, userModel) {
this.model = userModel;
this.validation = validation.on(this)
.ensure('model.firstName')
.isNotEmpty()
.hasLengthBetween(3,10);
}
}
user.html(工作)
<form role="form" validate.bind="validation">
<div class="form-group">
<label>First Name</label>
<input type="text" value.bind="model.firstName" class="form-control" >
</div>
</form>
我們正在試圖定義驗證邏輯在用戶模式本身,這樣,當我們需要在其他UI使用它,我們有集中的位置來驗證它而不是複製&將邏輯粘貼到任何地方。有可能我做錯了什麼,但如果有人知道如何做到這一點,任何幫助表示讚賞!
非常感謝你的幫助,它的工作! –