2016-01-22 4 views
0

У меня есть JS выглядит следующим образом:додзё метод драм INIT автозапуск

abinit(); 
    function abinit(){} 
    function hello{var a=12; return a;} 

    window.requestAnimFrame = (function(){ 
     return window.requestAnimationFrame || 
       window.webkitRequestAnimationFrame || 
       window.mozRequestAnimationFrame || 
       window.oRequestAnimationFrame || 
       window.msRequestAnimationFrame || 
     function(/* function FrameRequestCallback // callback,// DOMElement Element element){ 
     window.setTimeout(callback, 1000/60); 
     }; 
    })(); 

AMD конвертирован код выглядит ниже

define(["dojo/ready","dojo/dom","dojo/dom-construct","dojo/_base /fx","dojo/fx","dojo/dom-style","dojo/parser","dojo/window", "dojo/dom-attr","dojo/domReady!"], 
    function(ready,dom,domConstruct,baseFx,coreFx,domStyle,parser,win,domAttr,) { 
     var abGlobal = this; 
     abGlobal.abStatus = false; 
     return{ 
      abInit:function() { ...... }, 
      hellow:function(){var a=12; return a;} 
     } 
}); 

Есть несколько вопросов

  1. как вызвать метод инициализации когда я конвертирую его в dojo amd?

  2. как преобразовать запросAnimFrame в зависимости додзё?

  3. что правильный подход, согласно AMD (методы внутри возврата или вар = {функция ABINIT()} пути?

ответ

1

Вы можете попробовать вернуть «класс» с помощью declare и вызове метода в constructor

пример здесь:.

define([ 
     "dojo/ready", 
     "dojo/dom", 
     "dojo/dom-construct", 
     "dojo/_base /fx", 
     "dojo/fx", 
     "dojo/dom-style", 
     "dojo/parser", 
     "dojo/window", 
     "dojo/dom-attr", 
     "dojo/_base/declare", 
     "dojo/domReady!" 
     ], 
     function(ready, dom, domConstruct, baseFx, coreFx, domStyle, parser, win, domAttr,) { 
     var abGlobal = this; 
     abGlobal.abStatus = false; 
     return declare(null,{ 
      constructor:function(){ 
      this.abInit(); // call your init here 
      }, 
      abInit: function() { 
      }, 
      hellow: function() { 
      var a = 12; 
      return a; 
      } 
     }); 
     }); 

Или вернуться и объект после, вызовите метод потребовав ваш модуль, пример:

define([ 
    "dojo/ready", 
    "dojo/dom", 
    "dojo/dom-construct", 
    "dojo/_base /fx", 
    "dojo/fx", 
    "dojo/dom-style", 
    "dojo/parser", 
    "dojo/window", 
    "dojo/dom-attr", 
    "dojo/_base/declare", 
    "dojo/domReady!" 
    ], 
    function(ready, dom, domConstruct, baseFx, coreFx, domStyle, parser, win, domAttr,) { 
    var abGlobal = this; 
    abGlobal.abStatus = false; 
    // return an object here 
    return { 
     abInit: function() { 
     }, 
     hellow: function() { 
     var a = 12; 
     return a; 
     } 
    }; 
    }); 

    require(['yourModule'],function(yourModule){ 
    yourModule.abInit(); // call your method here 

    }); 
+0

Thanks.used 2nd solution, its working. как преобразовать requestAnimFrame в соответствии с dojo – angel

+0

@angel Я думаю, что в dojo нет подобной функции для requestAnimFrame, поэтому вы можете просто реализовать ее как vanilla js в своем приложении. – GibboK

+0

, если вы нашли мой ответ полезным, пожалуйста, не забудьте принять ответ :) щелкнув зеленую метку на левой стороне. спасибо – GibboK

Смежные вопросы