2013-09-27 3 views
1

Мне было интересно, почему доджо не реагирует на изменения на элементе? Я сделал простой пример, чтобы показать свою проблему!Call resize Method in dojo

<html > 
<head> 
    <script>dojoConfig = {parseOnLoad: true}</script> 
    <script src='../dojo/dojo.js'></script> 
    <script> 
     require([ 
      "dijit/layout/BorderContainer", 
      "dijit/layout/ContentPane" 
     ]); 
     require(["dojo/dom","dojo/on","dojo/domReady!"], function(dom, on){ 

      on(dom.byId("tester"),"resize", function() { console.log('window on resize') }); 

     }); 
    </script> 
</head> 
<body> 
<div data-dojo-type="dijit/layout/ContentPane" style="width: 50%;" > 
    <div data-dojo-type="dijit/layout/BorderContainer" id="tester"> 
    </div> 
</div> 
</body> 
</html> 

Все отлично работает, когда я использую on(window,"resize", function());, но я понятия не имею, почему в приведенном выше примере не работает.

+0

Метод изменения размеров из BorderContainer представляет собой метод виджета, а не метод DOMNode. Вы используете dom.byId («тестер»), которые возвращают узел dom, попробуйте использовать «dijit/registry» .byId, чтобы получить переменную виджета. –

+0

См. Мой «аспект использования, а не включен» в ответах. –

ответ

0

Тест (использование аспект, а не на):

<html > 
<head> 
    <script>dojoConfig = {parseOnLoad: true}</script> 
    <script src='../dojo/dojo.js'></script> 
    <script> 
     require([ 
      "dijit/layout/BorderContainer", 
      "dijit/layout/ContentPane" 
     ], function(BC, CP){ 
     require(["dojo/aspect","dojo/domReady!"], function(aspect){ 

      var bc= new BC({}, "tester"); 

      bc.startup(); 

      aspect.after(bc, "resize", function() { console.log('window on resize') }); 


     }); 
     });  
    </script> 
</head> 
<body> 
    <div id="tester" style="width: 50%;height:100%;"> 
    </div> 
</body> 
</html>