2017-06-27 50 views
0

我使用Meteor Blaze和Bootstrap 3在mouseover上顯示一個帶有工具提示的img。它工作正常使用靜態提示文本:如何根據Meteor Blaze和Bootstrap的數據做不同的工具提示?

<img class="socialMediaIcon" src={{iconPath}} data-toggle="tooltip" 
    data-placement="right" title={{tooltip}} /> 

,但我想動態改變取決於採集文檔字段的值的提示。

我創建了一個模板幫助產生所需的文本:

Template.SocialMedia.helpers({ 
    getSocialMediaIconTooltip: function(service) { 
    console.log(">>>>>> Tooltip service =", service); 
    var smsdata = socialMediaSystem.findOne({service: service}); 
    if (!smsdata.active) 
     return smsData.tooltip; 
    else { 
     var smudata = socialMediaUser.findOne({accountId: Meteor.user()._id, service: service}); 
     if (smudata) 
     return "Disconnect " + smsData.tooltip; 
     else 
     return "Connect " + smsData.tooltip; 
    } 
    }, 

,我與調用它:

<img class="socialMediaIcon" src={{iconPath}} data-toggle="tooltip" 
    data-placement="right" title={{getSocialMediaIconTooltip name}} /> 

,其中「名」是打開的文檔中的字段(代碼在{{#each}}循環中)。 「name」非空白,稍後在#each塊中成功使用。 「getSocialMediaIconTooltip」永遠不會被調用,也不會出現工具提示。我在其他工作的地方使用了這個參數傳遞語法。我究竟做錯了什麼?

回答

0

助手可能會拋出一個錯誤,而在Blaze模板中,這意味着空白輸出(即沒有工具提示)。檢查瀏覽器控制檯是否有錯誤消息。

你的幫手是指smsdatasmsData。這是正確的,還是smsData無效的參考?

+0

有時候只需要其他人提出一個建議,讓您看起來更接近代碼。我在try/catch中封裝了處理程序,'smsData'未定義。拼錯了,應該是第6,10和12行中的'smsdata'。另外,在findOne(第5行)中,鍵名是'subname',而不是'service'。現在工作就像一個魅力,謝謝@亞歷克斯的產品。有些日子,我只是覺得很蠢。 –

0

我的部分錯別字,請參閱上面的註釋。已更正的參考代碼:

Template.SocialMedia.helpers({ 
    getSocialMediaIconTooltip: function(service) { 
    try { 
    const smsdata = socialMediaSystem.findOne({subname: service}); 
    if (smsdata.active == false) 
     return smsdata.tooltip; 
    else { 
     const smudata = socialMediaUser.findOne({accountId: Meteor.user()._id, service: service}); 
     if (smudata) 
     return "Disconnect " + smsdata.tooltip; 
     else 
     return "Connect " + smsdata.tooltip; 
    } 
    } catch(ex) { 
    console.error(ex); 
    } 
    }, 
相關問題