如何使用javascript的PureMVC框架 – Command

Controller保存所有Command的映射。Command類是無狀態的,隻在需要時才被創建。

Command是負責處理復雜的數據邏輯的地方,它的使用歸納起來有兩種

1. 通過發送Notification 來觸發Command

2. addSubCommand() 來啟動

 

口水不要太多,我們馬上進入正題

 

在demo文件夾下建立文件夾controller ,然後在controller夾下建立一個叫StartupCommand.js的js文件,輸入以下內容

[javascript]
var StartupCommand = Objs("sweeps.controller.StartupCommand", 
    MacroCommand, 

    /**
     * @override
     * 添加Subcommands來啟動PuerMVC組件
     * 通常這裡是先準備Model(即Proxy),然後是View(即Mediators);
     */ 
    initializeMacroCommand: function( note ) 
    { 
        alert('收到由facade發來的'); 
        //this.addSubCommand( PrepModelCommand ); 
        //this.addSubCommand( PrepViewCommand ); 
    } 
     
}); 
 跟著在demo文件夾下面建立一個文件夾abc來存放Noticefiction,在abc文件夾下建立NotificationNames.js文件,輸入下面內容

[javascript]
var NotificationNames = Objs("demo.abc.NotificationNames",{}); 
 
NotificationNames.STARTUP = "startup"; 
然後在html文件裡導入 StartupCommand.js和NotificationNames.js文件

[html] view plaincopyprint?
<script type="text/javascript" src="src/demo/abc/NotificationNames.js"></script>   
<script type="text/javascript" src="src/demo/controller/StartupCommand.js"></script>   
完成後程序的目錄樹為下圖

跟著回到上次如何使用javascript的PureMVC框架 – 初始化裡面的 ApplicationFacade.js類

在 initializeController()方法裡面添加代碼

[javascript] 
<pre name="code" class="javascript">  ApplicationFacade.$super.initializeController.call( this ); 
    //註冊StartupCommand,並讓他監聽STARTUP消息 
    this.registerCommand( NotificationNames.STARTUP, StartupCommand ); 
以及在startup()方法裡面添加代碼
[javascript] view plaincopyprint?
//發送STARTUP消息給StartupCommand 
this.sendNotification( NotificationNames.STARTUP, app );  
這裡主要是通過使用sendNotification(notice, app);方法發送Notification來觸發StartupCommand 類。

程序在初始化的時候調用initializeController()方法,並使用registerCommand()方法註冊瞭StartupCommand實例,

這樣當收到由sendNotification()方法發送出來的NotificationNames.STARTUP消息後就會觸發StartupCommand實例的initializeMacroCommand()方法瞭
 運行後你會看到“收到由facade發來的”。

接下來我們來看看怎麼使用addSubCommand() 來啟動Command實例.

現在controller文件夾下新建PrepViewCommand.js文件,並輸入以下內容

[javascript] 
var PrepViewCommand = Objs("demo.controller.PrepViewCommand", 
    SimpleCommand, 
{    
    /**
     * @override
     */ 
    execute: function( note ) 
    { 
       alert('使用addSubCommand方法調用Command實例'); 
    } 
});  www.aiwalls.com
然後在html文件裡導入 PrepViewCommand.js文件。

[javascript]
<script type="text/javascript" src="src/demo/controller/PrepViewCommand.js"></script>   
接著在StartupCommand.js文件的initializeMacroCommand方法添加

[javascript] 
this.addSubCommand( PrepViewCommand ); 
這樣就可以調用到PrepViewCommand.js文件的execut()方法瞭!

運行看是不是有輸出?

最後文件夾目錄樹為

 
作者:laogong5i0

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *