Ember.js 余烬-成功保存后将属性设置为默认状态
我有一个相当长的表单,包含10多个动态填充的表单 这些是一些属性Ember.js 余烬-成功保存后将属性设置为默认状态,ember.js,Ember.js,我有一个相当长的表单,包含10多个动态填充的表单 这些是一些属性 metadata : {}, creators : [], subjects : [], contributors : [], dates : [], identifiers : [], descriptions : [], geolocations : [], alternateidentifiers : [], sizes : [], formats : [], rights :
metadata : {},
creators : [],
subjects : [],
contributors : [],
dates : [],
identifiers : [],
descriptions : [],
geolocations : [],
alternateidentifiers : [],
sizes : [],
formats : [],
rights : [],
files : [],
newMetaDataRecord : null,
// Choices from backend
resourceTypesGeneral : null,
contributorsType : null,
dateType : null,
relatedIdentifTypes : null,
relationType : null,
descriptionType : null,
//BACKEND errorLOG array
errorMessageObject : [],
// Validations
invalidCreatorsList : [],
validCreators : false,
invalidSubjectsList : [],
validSubjects : true,
invalidContributorsList : [],
validContributors : true,
invalidDatesList : [],
validDates : true,
invalidIdentifiersList : [],
validIdentifiers : true,
invalidDescriptionsList : [],
validDescriptions : true,
invalidGeosList : [],
validGeos : true,
invalidalternateIdentifiersList : [],
validAlternates : true,
invalidSizesList : [],
validSizes : true,
invalidFormatsList : [],
validFormats : true,
invalidRightsList : [],
validRights : true,
我以前有一个函数叫做
setFormToDefaultState : function(){
this.set('metadata', this.createEmptyMetaData());
this.set('metadata.resource_type', this.createEmptyResourceType());
this.createEmptyCreator();
},
这类似于初始化
init : function(){
this._super();
this.set('metadata', this.createEmptyMetaData());
this.set('metadata.resource_type', this.createEmptyResourceType());
this.createEmptyCreator();
},
当我的属性较少时,这种方法确实有效,但现在有将近30个属性可以设置为默认值,我想知道是否有更简单的解决方案。在路线上这样做也不起作用,因为重新激活字段将丢失(已填入数据)
那么是否有一个要重置的函数。all()
当前解决方案
var arProperties = ["creators", "subjects", "contributors", "dates", "identifiers", "descriptions", "geolocations", "alternateidentifiers", "sizes", "formats", "rights", "files", "titles", "taxons", "invalidTaxonsList", "invalidCreatorsList", "invalidSubjectsList", "invalidContributorsList", "invalidDatesList", "invalidIdentifiersList", "invalidDescriptionsList", "invalidGeolocationsList", "invalidAlternateidentifiersList", "invalidSizesList", "invalidFormatsList", "invalidRightsList", "invalidTitlesList"];
arProperties.forEach(function(arProperty) {
self.set(arProperty, []);
});
var trueProperties = ["formInvalid", "validTaxons", "validSubjects", "validContributors", "validDates", "validIdentifiers", "validDescriptions", "validGeolocations", "validAlternateidentifiers", "validSizes", "validFormats", "validRights"];
trueProperties.forEach(function(trueProperty){
self.set(trueProperty, true);
});
我通过在route上设置属性实现了这一点。因此,如果您第一次输入路由,模型将被加载,然后属性将发生更改,在第二次访问路由时,将调用“return”。这样,您的输入保持不变,您仍然可以轻松重置所有属性
import RouteMixin from 'appkit/misc/routemixin';
export default Ember.Route.extend(Ember.SimpleAuth.AuthenticatedRouteMixin, RouteMixin, {
model : function(){
var self = this;
if(Ember.isNone(self.get('controller.routeHasBeenLoaded'))){
return Ember.RSVP.hash({
invalidTaxonsList : [],
validTaxons : true,
invalidCreatorsList : [],
validCreators : false,
invalidSubjectsList : [],
validSubjects : true,
invalidContributorsList : [],
validContributors : true,
invalidDatesList : [],
validDates : true,
});
} else {
return;
}
},
}
});
控制器
init : function(){
this._super();
this.set('routeHasBeenLoaded', true)
}