我是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
非常感谢!
答案 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'