【问题标题】:Ext JS events/callbacks, object communication for newbExt JS 事件/回调,newb 的对象通信
【发布时间】:2013-07-03 18:20:49
【问题描述】:

我是一名自学学生,对 javascript 和 ExtJs 都是全新的。

我要做的是创建一个主类动物,然后让两个子类从动物继承属性/方法。那些是猫和狗......然后我想让多个对象(多个猫和狗)从猫和狗类继承。多个对象,cat1、mycat、cat2、dog1、mydog、topdog 等......应该能够相互交谈和倾听。

当 cat1、mycat 等说话时,它只是警觉(东西),当这种情况发生时,狗会提醒“我的狗听到了”。

在社区 (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 会自动听到这种声音(“喵喵声”)并提醒我的狗听到了。虽然在 extJS 中。任何帮助或建议将不胜感激。

【问题讨论】:

    标签: events extjs


    【解决方案1】:

    您的类定义似乎设置正确,您只需将侦听器添加到正确的实例:

    var myCat = new Cat({ name: 'myCat' });
    var myDog = new Dog({ name: 'myDog' });
    
    myCat.on('makesound', function() {
        myDog.makesound();
    });
    

    按照您当前的设置方式,您的听众在myDog,这意味着当myDog 发出声音时,您的“我的狗听到了”将出现,而不是myCat

    另外一个注意事项:你应该总是用大写字母命名你的类(使用Animal而不是animal)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多