0

私は編集できるテーブルを持っています。しかし、ページを変更してページを変更すると、編集された値が削除されます。ページを変更しても保存機能を呼び出そうとしましたが、うまく機能しません。
私は表のように持っている:ページングのページ変更を保存しても機能しません。値は保存されません

... 
<table> 
... 
<th> 
       <span class="input-group-btn"> 
       <button type="button" class="btn btn-default" ng-show="!valueForm.$visible" ng-click="valueForm.$show()"> 
        Edit 
       </button> 
       </span> 
      </div> 
      <form editable-form name="valueForm" onaftersave="$ctrl.saveColumn('valueTranlate')" ng-show="valueForm.$visible"> 
       <button type="submit" ng-disabled="valueForm.$waiting" class="btn btn-primary"> 
       Save 
       </button> 
       <button type="button" ng-disabled="valueForm.$waiting" ng-click="valueForm.$cancel()" class="btn btn-default"> 
       Cancel 
       </button> 
      </form> 
      </th> 
... 
<tr dir-paginate="v in my array> 
... 
</table> 
    <dir-pagination-controls auto-hide="false" on-page-change="$ctrl.saveColumn()" boundary-links="true" max-size='7'></dir-pagination-controls> 
... 
my .js 
saveColumn() { 
     if (this.$scope.valueForm.$visible) { 
      angular.forEach(this.langV, (value) => { 
      this.$http.patch('/api/dict_values/' + value.v_id, { 
       id: value.v_id, 
       value: value.value2, 
       user_id: this.currentUser()._id, 
       key_id: value._id, 
       lang_id: this.$scope.select2 
      }); 
      }); 
      this.showLang(this.$scope.select1, this.$scope.select2); 
     } 
     } 

だから他のページの編集を、それがすべてのページにすべてのフィールドを反復処理し、値を保存saveColumn()を呼び出すことではなく、「削除」しているため。ページの変更時にsave()を呼び出してみましたが、値はsave()より速く「削除」されます。

どのように私はすべてのページで編集することができますし、ページを変更すると値は忘れられませんか?

答えて

1

すべての編集値を「覚えている」工場を追加して解決しました。
何か問題が発生するたびに、このFactoryを起動するためにTextAreaに変更を加えました。編集は文句を言わない

.factory('rememberValues',() => { 
    var valuesE = []; 
    var savingValue; 
    return { 
    values:() => { 
     return [].concat(valuesE);//for output and saving,contains all edited fields 
    }, 
    addValue: (obj) => {//adding in Array 
     savingValue = _.find(valuesE, function(value) { 
     return value._id === obj._id; 
     }); 
     if (savingValue) { 
     savingValue.value2 = obj.value2; 
     } else { 
     valuesE.push(obj); 
     } 
    }, 
    clear:() => {//if I want to clear the Array 
     angular.forEach(valuesE, (value) => { 
     delete value.close; 
     }); 
     valuesE = []; 
    }, 
    cancel:() => {// The User Cancels the Edits 
     angular.forEach(valuesE, (value) => { 
     value.value2 = value.close;// Original Value is put in again 
     delete value.close; 
     }); 
     valuesE = []; 
    } 
    }; 
}) 
ChangePange

によって消去されるので

<span editable-textarea="v.value2" e-ng-change="$ctrl.remember(v,$data)" e-name="valueTranslate" e-form="valueForm" e-rows="3" e-cols="25" onbeforesave="$ctrl.checkName($data)"> 
       {{v.value2 || '' }} 
      </span> 

まず、私の工場でそれを保存するとremember(v,$data)機能

 // Remember Edits for Pagination 
    remember(obj, data) { //obj-> actual edited, data -> the input 

     if (obj.close === undefined || obj.close === '' || obj.close === null) { 
      obj.close = obj.value2; 
     }// Attaching a Close property for the Case the User cancel the Edits 

     obj.value2 = data;// saving the Edits in value2, this is which is get send to DB 

     this.rememberValues.addValue(obj); // and send to Factory 
     } 

を呼び出します

関連する問題