警報和錯誤

警報和錯誤幾乎是所有 Meteor 元件模式中最簡單的。事實上,它們是如此簡單,以至於它們本身幾乎沒有註冊成為一種模式。你需要做的就是設定一個適當的 Handlebar 模板,新增一個幫助程式,然後將其連線到一個被動的 Session 變數,而不是新增 FlashAlert 模組或模式。

先決條件
以下程式碼分別需要 LESS 預編譯器和 Bootstrap-3。你需要在命令提示符下執行以下命令才能使它們正常工作。

meteor add less
meteor add ian:bootstrap-3 

文件物件模型:定義警報物件首先,在文件物件模型中新增一些元素。在這種情況下,我們想為我們的警報建立一個 div 元素,它連線到兩個 Handlebar 助手。

<template name="postsPage">
  <div id="postsPage" class="page">
    <div id="postsPageAlert" class="{{alertColor}}">{{alertMessage}}</div>
    <div class="postsList">
      <!-- other code you can ignore in this example -->
    </div>
    <div id="triggerAlertButton" class="btn btn-default">
  </div>
</template>

Javascript:定義模板助手然後我們想要連線一些控制器,這些控制器將使用資料填充物件模型。我們這樣做有兩個反應會話變數和兩個車把助手。

Session.setDefault('alertLevel', false);
Session.setDefault('alertMessage', "");

Template.postsPage.alertColor = function(){
 if(Session.get('alertLevel') == "Success"){
  return "alert alert-success";
 }else if(Session.get('alertLevel') == "Info"){
  return "alert alert-info";
 }else if(Session.get('alertLevel') == "Warning"){
  return "alert alert-warning";
 }else if(Session.get('alertLevel') == "Danger"){
  return "alert alert-danger";
 }else{
  return "alert alert-hidden"
 }
}

Template.postsPage.alertMessage = function(){
  return Session.get('alertMessage');
}

樣式:定義 DOM 可見性然後我們想回到我們的 CSS,並定義 postsPage 元素的兩個檢視。在第一個檢視中,我們顯示物件模型中的所有內容。在第二個檢視中,僅顯示物件模型的一些內容。

#postsPage{
  .alert{
    display: block;
  }
  .alert-hidden{
    display: none;
  }
}

Javascript:觸發警報
最後,我們回到我們的控制器,我們定義一個事件控制器,它會在點選時觸發我們的警報。

Template.postsPage.events({
  'click #triggerAlertButton':function(){
    Session.set('alertLevel', 'Success');
    Session.set('alertMessage', 'You successfully read this important alert message.');
  }
});

這就是它的全部! 超級簡單吧?你現在可以在程式碼庫中的任何位置設定 alertLevelalertMessage 會話變數,你的應用程式將被動地顯示警報和錯誤訊息! :)