Ext.create中的Sencha Touch设置属性(

时间:2011-11-04 22:19:06

标签: sencha-touch

我是Sencha 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 个答案:

答案 0 :(得分:1)

想出来。我从未定义过更新配置属性的构造函数。我认为这是由框架自动神奇地发生的,但似乎没有。

问题代码在此块中:

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'