私はextjs about adding a form on clickのチュートリアルに従おうとしています。Sencha ext.js、オンザフライでフォームを作成
ここで私は、より構造化されたアプローチを直接作成したいと考えています。だから私はExt.define
グリッドとグリッドの両方のフォームを作成するために使用しています。
グリッド:
Ext.define('MyApp.view.main.EmployeeGrid', {
extend: 'Ext.grid.Grid',
xtype: 'employee-grid',
title: 'Employee Directory',
iconCls: 'x-fa fa-users',
listeners: {
itemtap: function() {
console.log("test");
Ext.create("MyApp.view.main.FormPanel", {});
}
},
store: {
data: [{
"firstName": "Jean",
"lastName": "Grey",
"phoneNumber": "(372) 792-6728"
}]
},
columns: [{
text: 'First Name',
dataIndex: 'firstName',
flex: 1
}, {
text: 'Last Name',
dataIndex: 'lastName',
flex: 1
}, {
text: 'Phone Number',
dataIndex: 'phoneNumber',
flex: 1
}]
});
形態:
Ext.define("MyApp.view.main.FormPanel", {
extend: "Ext.form.Panel",
xtype: 'form-panel',
title: 'Update Record',
floating: true,
centered: true,
width: 300,
modal: true,
items: [{
xtype: 'textfield',
name: 'firstname',
label: 'First Name'
}, {
xtype: 'toolbar',
docked: 'bottom',
items: ['->', {
xtype: 'button',
text: 'Submit',
iconCls: 'x-fa fa-check',
handler: function() {
this.up('formpanel').destroy();
}
}, {
xtype: 'button',
text: 'Cancel',
iconCls: 'x-fa fa-close',
handler: function() {
this.up('formpanel').destroy();
}
}]
}]
});
問題のコードはMyApp.view.main.EmployeeGrid
クラスlisteners: ...
下にあります。コンソールにはエントリが記録されているので、関数が実行されていることがわかります。ただし、フォームは表示されません。 - ここで正しいアプローチは何ですか?
返信いただきありがとうございました。私は作成したことに間違いがあったことに気付きました。もちろん、 "MyApp.view.main.FormPanel"(私の元の投稿を更新しました)です。 - しかし、あなたの "良い"解決策を使用しようとすると、エラーが発生します: 'Uncaught TypeError:this.myForm.loadRecordは関数ではありません。 ' – paul23
@ paul23私はあなたが近代的に走っていることを見落としました。彼らはそれを['setRecord'](http://docs.sencha.com/extjs/6.2.1/modern/Ext.form.Panel.html#method-setRecord)と呼んでいるようです。私の経験から、古典対現代の問題は、開発プロセス全体を通してあなたを悩ませてくれると言うことができます。 – Alexander