dojox gfx: обработчик событий формы за пределами другой формы

У меня проблема с обработкой событий в dojox gfx.

Рассмотрим следующий код:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Example</title>
    <!-- load Dojo -->
    <script>
        dojoConfig = {
        async: true,
        gfxRenderer: "svg,silverlight,vml" // svg gets priority
    };
    </script>
    <script src="dojo/dojo.js"></script>
</head>
<body>
<script>
require(["dojox/gfx","dojox/gfx/Moveable","dojo/domReady!","dojox/gfx/fx"],function(gfx,Moveable,dom,gfxFx) {
    var surface = gfx.createSurface("surfaceElement", 400, 400);
    var rect = surface.createRect({ x: 30, y: 30, width: 100, height: 100 }).setFill('blue');
    rect.connect('onclick',function(e) {
        alert('first')
    });
    var otherRect = surface.createRect({ x: 30, y: 30, width: 100, height: 50 }).setFill('red');
}); 
</script>
<!-- DOM element which will become the surface -->
<div id="surfaceElement"></div>
</body>
</html>

Есть ли способ обработать событие синего прямоугольника, когда я нажимаю на красный? Спасибо

1 ответ

Просто переместите создание 2-го прямоугольника перед слушателем событий и затем обратитесь к нему по переменной:

require(["dojox/gfx","dojox/gfx/Moveable","dojo/domReady!","dojox/gfx/fx"],function(gfx,Moveable,dom,gfxFx) {
    var surface = gfx.createSurface("surfaceElement", 400, 400);
    var rect = surface.createRect({ x: 30, y: 30, width: 100, height: 100 }).setFill('blue');
    var otherRect = surface.createRect({ x: 30, y: 30, width: 100, height: 50 }).setFill('red');
    rect.connect('onclick',function(e) {
        // otherRect is available here
        console.log(otherRect);
    });
});
Другие вопросы по тегам