Не работает атрибут refs контроллера Sencha Touch 2.0? - PullRequest
2 голосов
/ 08 марта 2012

Меня интересует атрибут refs класса Sencha Touch Ext.app.Controller. Я видел видеоурок, где была создана простая контактная форма. Нет, я пытался создать контактную форму для своего приложения, и я получаю сообщение об ошибке: «Uncaught TypeError: Object [object Object] не имеет метода 'getContactForm' '

Вот мой контроллер

Ext.define('MyFirstApp.controller.Main', {
extend: 'Ext.app.Controller', 
views: ['Viewport', 'Home'],

refs: [
     {
         ref: 'contactForm',
         selector: '#contactForm'
     }
],

init: function() {
    this.control({
        'button[action=submitContact]': {
            tap: 'submitContactForm'
        }
    });
},

submitContactForm: function() {
    var form = this.getContactForm();
    form.submit({
        url: 'contact.php'
    });
}

});

Полагаю, что с 'refs' что-то не так, в видео парень сказал, что метод "getContactForm" будет создан из-за атрибута "ref" в contactForm, но это не так. Что я тут не так делаю? .. Спасибо за помощь!

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

Свойство refs атрибута изменено с предварительной версии разработчика Sencha Touch 2.0 на бета / финальную версию.Итак, то, что вы написали, было правильным для предварительного просмотра, но в настоящее время это просто пара имя-значение.Для вашего случая:

refs: {
   contactForm: '#contactForm'
}
1 голос
/ 09 марта 2012

Я согласен с jeremygerrits, я не могу быть уверен, что это правильный синтаксис для определения ссылок.

На основании документации я бы предпочел сделать это так:

Ext.define('MyFirstApp.controller.Main', {
    extend: 'Ext.app.Controller', 

    views: ['Viewport', 'Home'],

    config: {
        refs: {
            contactForm: '#contactForm'
        }
    }

    init: function() {
        this.control({
            'button[action=submitContact]': {
                tap: 'submitContactForm'
            }
        });
    },

    submitContactForm: function() {
        var form = this.getContactForm();
        form.submit({
            url: 'contact.php'
        });
    }
});

См. Также: http://docs.sencha.com/touch/2-0/#!/guide/controllers

0 голосов
/ 08 марта 2012

Похоже, вы неправильно настроили ссылки.Вот простой контроллер:

Ext.define('App.controller.Main', {
  extend: 'Ext.app.Controller',
  config: {
    refs: {
      main: 'mainpanel'
    }
  }
});

mainpanel является xtype или может быть селектором CSS, а main даст вам getMain(), как то, о чем говорилось в видео.

...