form.getRecord () является неопределенным.Extjs - PullRequest
0 голосов
/ 07 декабря 2018

В моем приложении я использую компонент Ext.form.Panel.На панели установите выбранную запись из дерева, используя loadRecord(record)

...
showDataFields: function(view, record, item, index, event) {       
        var panel = view.up('tabpanel');
        var formfield   = panel.down('form');        
        formfield.loadRecord(record);
    },

....

Я получаю запись для отправки данных в хранилище

...

saveUserData: function(button, e) {
        var values;
        var panel    = button.up('actionform'),
            form   = panel.down('form');
        record = form.getRecord();
        console.log(record)// value undefined. Why ?      
    },

...

Как получить запись?

Ссылка на мое приложение fiddle . Форма находится в файле app / view / ActionFormTree.js

Методы showDataFields и saveUserData находятся в app / controller / MainController..js

благодарю

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Когда вы получаете form компонент, используя button.up('actionform'), а затем снова используете panel.down('form').Таким образом, в этом случае вы получаете внутренний form из form компонента.Смотрите скриншот ниже для лучшего понимания (см. Выбранный элемент dom)

enter image description here

Так что вам не нужно использовать селектор вниз, потому что вы уже получаете компонент form, использующий button.up('actionform').

Фрагмент кода

saveUserData: function(button, e) {

    var values, form = button.up('actionform'),
        record = form.getRecord();

    console.log(record)
},

Вы можете проверить здесь с работающей скрипкой .

0 голосов
/ 11 декабря 2018

лучше назначить свойство itemId вашей панели формы и использовать функцию getValues ​​()

var formpanel = Ext.ComponentQuery.query('form[itemId=your_form_itemId_here]')[0];
var form = formpanel.getForm();//this gets all the fields inside the form 
//no to fetch the record or form field values
var record = form.getValues();

Это удобная функция для извлечения текущих значений каждого поля в форме....

0 голосов
/ 07 декабря 2018

Если я правильно понимаю ваш дизайн, я думаю, проблема в том, как вы ссылаетесь на вашу форму.

saveUserData: function(button, e) {

    var values;
    var panel  = button.up('tabpanel'),
        form   = panel.down('form');
    // Or, because button is on your form:
    // var form = button.up('form');

    record = form.getRecord();
    console.log(record)// value undefined. Why ?

    //store = this.getUserTreeStoreStore('UserTreeStore');
    //values = form.getValues();
    //id = form.getRecord().get('id');

},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...