我是一名自学的学生,对javascript和ExtJs都是全新的。
我要做的是创建一个主类动物,然后有两个子类继承动物的属性/方法。那些是猫和狗......然后我想制作多个物品(多只猫和狗的)从类猫和狗继承。多个对象,cat1,mycat,cat2,dog1,mydog,topdog等...应该能够互相交谈和倾听。
当cat1,mycat等说话时,它只是警报(东西),当发生这种情况时,狗警告“mydog听到了”。
我已经在社区(How to create listeners with javascript)
的帮助下在javascript中完成了此操作我现在也想使用ExtJS这样做。这就是我到目前为止所拥有的
Ext.define('animal', {
extend: 'Ext.util.Observable',
constructor: function(config)
{
this.name = config.name;
this.addEvents({'makesound' :true});
this.listeners = config.listeners;
//animal.superclass.constructor.call(this, config);
this.callParent(arguments);
},
makesound: function()
{
alert(this.sound);
this.fireEvent('makesound'); // this is wrong isn't it?
// I was thinking that the make sound
// would trigger the event makesound
}
});
//var cat = Ext.create('animal');
//var dog = new animal;
//cat.makesound();
//dog.makesound();
Ext.define('cat', {
extend: 'animal',
name: name,
sound: 'meow'
});
Ext.define('dog', {
extend: 'animal',
name: name,
sound: 'woof'
});
var myCat = new cat({
name: 'myCat'});
var myDog = new dog({
name:'mydog',
listeners: {
makesound: function() {
alert('mydog heard that');
}
}
});
myCat.makesound();
myDog.fireEvent('makesound'); //
我真正想要的是让mycat发出声音,然后mydog自动听到makeound('meow')并警告我的狗听到了。但是在extJS中。任何帮助或建议将非常感谢。
答案 0 :(得分:0)
您似乎已正确设置了类定义,只需将侦听器添加到正确的实例中:
var myCat = new Cat({ name: 'myCat' });
var myDog = new Dog({ name: 'myDog' });
myCat.on('makesound', function() {
myDog.makesound();
});
您当前设置的方式是,您的听众位于myDog
,这意味着当您发出myDog
发出声音时,您的“mydog听到了”,而不是myCat
。
另一个注意事项:您应始终使用大写字母命名您的班级(使用Animal
代替animal
)。