Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬-成功保存后将属性设置为默认状态_Ember.js - Fatal编程技术网

Ember.js 余烬-成功保存后将属性设置为默认状态

Ember.js 余烬-成功保存后将属性设置为默认状态,ember.js,Ember.js,我有一个相当长的表单,包含10多个动态填充的表单 这些是一些属性 metadata : {}, creators : [], subjects : [], contributors : [], dates : [], identifiers : [], descriptions : [], geolocations : [], alternateidentifiers : [], sizes : [], formats : [], rights :

我有一个相当长的表单,包含10多个动态填充的表单

这些是一些属性

  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)
}