Sencha Touch - настройка свойств в Ext.create ( - PullRequest
0 голосов
/ 05 ноября 2011

Я новичок в Сенча Touch.Перебирая примеры на их сайте и получая неожиданное поведение .. Не могу понять почему .. Интересно, если кто-нибудь может сказать мне, что я делаю неправильно ..

В основном - определен новый класс .. Определенсвойство с именем 'name' установлено в null.Затем создал новый экземпляр класса Animal и установил name: 'Bob' .. Но, похоже, он никогда не будет установлен ..

Должен ли я иметь возможность задавать свойства таким образом при созданииновый экземпляр объекта?Похоже, что в руководстве написано, что я должен ... Вызов bob.setName ('some name') работает, но я надеялся, что смогу установить значения в методе create ..

Код:

Ext.define('Animal', {
        config: {
            name: null
        },

        speak: function() {
            alert(this.getName());
        }
    }); 

    var bob = Ext.create('Animal', {
        name: 'Bob' // set 'name' to Bob
    });

    bob.speak(); //alerts 'null' - site says it should alert 'Bob'
    alert( bob.getName() ); //alerts null

Большое спасибо!

1 Ответ

1 голос
/ 12 ноября 2011

Разобрался. Я никогда не определял конструктор, который обновлял свойства конфигурации. Я думал, что это произошло автоматически, но похоже, что это не так.

Код проблемы был в этом блоке:

Ext.define('Animal', { 
   config: { name: null },

   speak: function() {
      alert(this.getName());
   }
}); 

В котором отсутствовала настройка конфига в конструкторе:

Ext.define('Animal', { 
   config: { name: null },

   constructor: function(config) {
      this.initConfig(config);

      return this;
   },

   speak: function() {
      alert(this.getName());
   }
}); 

Теперь, когда я создаю новый экземпляр Animal, имя устанавливается

var bob = Ext.create('Animal', {
    name: 'Bob' // set 'name' to Bob
});

bob.speak(); //now alerts 'Bob'
alert( bob.getName() ); //alerts 'Bob'
...