2014-07-20 2 views
3

riot.js가 사용자 정의 이벤트를 트리거하고 처리하는 방법을 이해합니다. 또한이 라이브러리에서 템플릿 기능을 사용하는 방법을 이해합니다. 그러나 나는 폭동의 패턴을 만들고 그것을 강제하는 "핵심을 확장하는 모듈"이라는 패턴을 이해하지 못합니다.모듈 응용 프로그램을 생성하는 riot.js 기능 이해

var instance; 

global.admin = riot.observable(function(arg) { 

    if (!arg) return instance; 

    if ($.isFunction(arg)) { 
     admin.on("ready", arg); 
    } 
    else { 
     instance = new Admin(arg); 
     instance.on("ready", function() { 
      admin.trigger("ready", instance); 
     }); 
    } 
}); 

가 정확히 어떻게이 패턴 작업과 어떻게 도움이 되나요 응용 프로그램의 핵심 확장을 않습니다 여기 폭동 웹에서의 매우 스파 스 (만) 문서에서 사용할 수 있습니다 무엇인가? 고맙습니다.

+0

이 질문은 Riot v1 (질문 날짜를 살펴볼 때)과 오래된 것입니다. Riot v2는 비슷한 "믹스 인"을 가지고 있습니다. – Shannon

답변

3
// Declare variable which will hold application instance. 
var instance; 

// Define observable admin function to be able to trigger and listen events. 
global.admin = riot.observable(function(arg) { 

    // Call admin() returns the application instance. 
    if (!arg) return instance; 

    /* Call admin(function(arg){...}) will call a function 
    when "ready" event is triggered in admin function 
    passing the application instance as arg to function. 
    In that way presenters are started in riot-admin demo. 
    All models should trigger/listen events on instance 
    and presenters should listen/trigger events on instance (which is observable) 
    thus providing loose coupling of components. 
    Instance itself can play Mediator role */ 
    if ($.isFunction(arg)) { 
    admin.on("ready", arg); 
    } 
    else { 
    /* Call admin(non_function_argument) is treated as initialization of application 
     with arg being a config object. Admin(arg) returns observable */ 
    instance = new Admin(arg); 

    // Listen to instance's "ready" event. "Ready" is triggered somewhere in Admin(arg). 
    instance.on("ready", function() { 
     /* Trigger "ready" in admin function to call all functions 
     passed with admin(function(arg){...}) call earlier passing instance as arg. */ 
     admin.trigger("ready", instance); 
    }); 

    // Add this line if Admin(config) is purely sequential. 
    // instance.trigger("ready"); 
    } 
}); 

/* Hope this will help a bit. But you should see it yourself in browser debugger to understand it clearly. */ 
+0

죄송합니다. 죄송합니다. 나는 이틀 동안 점검했고 이것에 대해 어떤 도움도 포기했다. 설명 주셔서 감사합니다 –

+0

하나의 업데이트 - Admin (config)가 순전히 순차적 인 경우 인스턴스에서 수동으로 "준비"이벤트를 트리거해야합니다. 코드가 순차적이며 이벤트가 Admin (config) 내에서 트리거되면 Admin (config) 내에서 이벤트가 트리거 된 후에이 라인이 해석되므로 instance.on ("ready", ...)은 결코 발생하지 않습니다. 나는 대답을 편집했다. – rmn