名前とコードの2つの列を持つテーブルがあります。私はコード列のための簡単なカスタムエディタを作成しました。アイデアは、ユーザーがセルをダブルクリックすると、コードエディタ付きのカスタムダイアログが開きます。私はそれを実装し、ここで簡単な例を掲載している:Handsontable、カスタムテキストエディタ、コピー/ペーストの問題
はしかし、私はコピー/ペースト機能を持つ1つの問題を持っている:私は私のエディタを使用する場合、セルを押して「保存」のためにいくつかのコードを編集し、 「コード」列の値が正しく保存されているようです。しかし、このセルを選択してCtrl + Cを押すと、値はコピーされません。
質問があります:これはhandontableのバグですか、私はカスタムエディタを実装している間に何かを見逃してしまっていますか?カスタムエディタを変更して、コピーペースト機能を適切に動作させるにはどうすればよいですか。
エディタのコード:
var ScriptEditor = Handsontable.editors.TextEditor.prototype.extend();
ScriptEditor.prototype.getValue = function() {
return this.TEXTAREA.value;
};
ScriptEditor.prototype.setValue = function (value) {
this.TEXTAREA.value = value;
};
ScriptEditor.prototype.open = function() {
var self = this;
this.instance.deselectCell();
var value = self.instance.getDataAtCell(self.row, self.col);
var decodedCode = decodeURI(value);
var success = function (resultCode) {
var encodedCode = encodeURI(resultCode);
self.instance.setDataAtCell(self.row, self.col, encodedCode, 'edit');
self.instance.selectCell(self.row, self.col);
};
openEditor(decodedCode)
.then(success);
};
ScriptEditor.prototype.focus = function() {
Handsontable.editors.TextEditor.prototype.focus.apply(this, arguments);
};
ScriptEditor.prototype.close = function() {
};
var openEditor = function (codeToEdit) {
var deferred = $q.defer();
var dialog = ngDialog.open({
template: 'editorTemplate.htm',
className: 'ngdialog-theme-default',
controllerAs: "editor",
controller: function() {
var vm = this;
vm.inputCode = codeToEdit;
vm.submitChanges = function() {
dialog.close();
deferred.resolve(vm.inputCode);
};
}
});
return deferred.promise;
};
仕様: 角度バージョン:1.6.1 Handsontableバージョン:0.31.2 Chromeバージョン:バージョン58.0.3029.81