2017-06-29 36 views
1

我正在使用流星和我的項目大火,我想在流星模板中調用JavaScript函數。更確切地說,我當然使用發佈者訂閱者,但是當我訂閱以從mongo DB中檢索信息時,我想要觸發一個函數。

事實上,我檢索數據,但它處理像「真」或「假」的行數據,我想根據數據結果調用影響不同屬性的函數。例如,如果my db的元素設置爲「true」,那麼訂閱將準備就緒(或者一旦我的頁面加載完成),它將用綠色矩形替換「true」。

要做到這一點,我想知道,如果我們可以用

Template.devicesConfiguration.onCreated(function(){ 
var self = this; 
self.autorun(function(){ 
    self.subscribe('Buttons'); 

    //call a javascript function that uses the result of the db 

    }); 
}); 

Template.devicesConfiguration.helpers({ 
    buttons:()=>{ 

     //call a javascript function that uses the result of the db 

     return ButtonsCollection.find({}); 

    } 

}); 

,甚至是方法?

有人有想法嗎?非常感謝 !

回答

0

我會去與一個訂閱,然後簡單的輔助功能:

Template.devicesConfiguration.onCreated(function() { 
    Meteor.subscribe('Buttons'); // Subscribe to your buttons 
}); 

Template.devicesConfiguration.helpers({ 
    // Will return a "transformed" array of all the Buttons in collection 
    buttons(){ 
     return ButtonsCollection.find({}) // Find all buttons 
           .map(button => { 
            // Do something with button object 
            // Like check true/false and change rectangle color 
           }) 
    } 
}); 

我只是訂閱模板創建的數據。

然後,我註冊了一個buttons幫助程序,它從集合中返回數據,但在返回數據之前對數據執行轉換(map函數)。

然後,您可以在模板中使用{{#each button in buttons}}來遍歷數據並顯示每個按鈕。

模板
+0

我試圖這樣做,但錯誤,我猜語法不正確,但我理解這個想法。 這裏模板助手的代碼: '按鈕:)(=> {\t 返回ButtonsCollection.find({})映射(按鈕=> { 變種buttonValue = ButtonsCollection.find({},{字段:{值: 「真」}})取(); 變種CheckButtonsLed = document.getElementsByClassName( 「CheckButtonsLed」); 爲(I = 0;我

0
Template.devicesConfiguration.helpers({ 
    buttons() { 
     return ButtonsCollection.find({}).map(button => { 
      if(button.value === true) button.className = 'green'; 
      else button.className = 'red'; 
     }) 
    } 
}); 

類似:

{{#each button in buttons}} 
    <button class={button.className}>{button.name}</button> 
{{/each}} 

沒有寫任何火焰在一段時間,但我希望你的想法。

+0

感謝您的回答,我理解這個想法:)我試圖實現它。它的作品,但手柄不顯示我的按鈕的屬性,我用{{button name}},{{button.name}},{{name}},{{button name}},'' {button.name}'或者'{name}'。然而,助手部分的作品,我可以例如'console.log(button.name + button。值)'根據它在if循環中的值語句。 –