diff --git a/projects/WebMVC/wwwroot/js/valid.js b/projects/WebMVC/wwwroot/js/valid.js new file mode 100644 index 00000000..0666dde5 --- /dev/null +++ b/projects/WebMVC/wwwroot/js/valid.js @@ -0,0 +1,2 @@ +Vue.prototype.valid2 = function () { +} \ No newline at end of file diff --git a/projects/WebMVC/wwwroot/router/shared/update.html b/projects/WebMVC/wwwroot/router/shared/update.html index efb4e2b3..3af6837b 100644 --- a/projects/WebMVC/wwwroot/router/shared/update.html +++ b/projects/WebMVC/wwwroot/router/shared/update.html @@ -22,10 +22,10 @@
- {{getErrors(key)}} + {{getErrorList(key)}}
@@ -90,10 +90,21 @@ vm.data = response.data; }); }, + getSchema: function () { + return this.data.schema; + }, + getModel: function () { + return this.data.model; + }, + getErrors: function () { + return this.data.errors; + }, change: function (name) { var vm = this; - var value = this.data.model[name]; - var property = this.data.schema.properties[name]; + var schema = this.getSchema(); + var model = this.getModel(); + var property = schema.properties[name]; + var value = model[name]; var list = []; list.push( this.validInternal(property.required, name, o => Promise.resolve(value !== undefined && value !== null)) @@ -156,8 +167,9 @@ }, valid: function () { var vm = this; + var schema = this.getSchema(); var list = []; - _.forIn(this.data.schema.properties, function (value, key) { + _.forIn(schema.properties, function (value, key) { list.push(vm.change(key)); }); return Promise.all(list); @@ -167,11 +179,33 @@ var vm = this; message = message || validator.message; return valid().then(function (value) { + var error = Enumerable.from(vm.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase()); if (value) { - vm.removeError(name, message); + if (error) { + if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { + error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray(); + } + if (error.value.errors.length === 0) { + var index = _.findIndex(vm.data.errors, o => o.key.toLowerCase() === name.toLowerCase()); + vm.getErrors().splice(index, 1); + } + } } else { - vm.updateError(name, message); + if (!error) { + error = { + key: name, + value: { + errors: [{ errorMessage: message }] + } + }; + vm.data.errors.push(error); + } + else { + if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { + error.value.errors.push({ errorMessage: message }); + } + } } }); } @@ -180,37 +214,8 @@ camelCased: function (name) { return name[0].toLowerCase() + name.substr(1); }, - removeError: function (name, message) { - var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase()); - if (error) { - if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { - error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray(); - } - if (error.value.errors.length === 0) { - var index = _.findIndex(this.data.errors, o => o.key.toLowerCase() === name.toLowerCase()); - this.data.errors.splice(index, 1); - } - } - }, - updateError: function (name, message) { - var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase()); - if (!error) { - error = { - key: name, - value: { - errors: [{ errorMessage: message }] - } - }; - this.data.errors.push(error); - } - else { - if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { - error.value.errors.push({ errorMessage: message }); - } - } - }, getValidationSummary: function (excludePropertyErrors) { - var query = Enumerable.from(this.data.errors); + var query = Enumerable.from(this.getErrors()); if (excludePropertyErrors) { query = query.where(o => o.key === '') } @@ -218,11 +223,11 @@ }, hasErrors: function (key) { key = key.toLowerCase(); - return Enumerable.from(this.data.errors).any(o => o.key.toLowerCase() === key); + return Enumerable.from(this.getErrors()).any(o => o.key.toLowerCase() === key); }, - getErrors: function (key) { + getErrorList: function (key) { key = key.toLowerCase(); - return Enumerable.from(this.data.errors) + return Enumerable.from(this.getErrors()) .where(o => o.key.toLowerCase() === key).selectMany(o => o.value.errors).select(o => o.errorMessage).toArray().join(','); }, hasPermission: function () {