2017-06-27 14 views
0

私は、メテオブレイズとブートストラップ3を使用して、マウスオーバー時にツールチップで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"は空白ではなく、#各ブロックの後半で正常に使用されます。 「getSocialMediaIconTooltip」は呼び出されず、ツールチップは表示されません。私はこの引数を、他の場所で構文を渡して使用しました。私は間違って何をしていますか?

答えて

0

ヘルパーがエラーを投げている可能性があります.Blazeテンプレートでは、これは空白の出力を意味します(つまり、ツールチップはありません)。ブラウザコンソールでエラーメッセージを確認します。

あなたのヘルパーは、smsdatasmsDataの両方を指します。それが正しいですか、またはsmsDataは無効な参照ですか?

+0

時には、他の人があなたにコードをより近くに見せるように提案することがあります。私はtry/catchでハンドラをラップし、 'smsData'は未定義です。間違っています.6行目、10行目、12行目で 'smsdata'にする必要があります。また、findOne(5行目)のキー名は' service'ではなく 'subname'です。作品は魅力のように今、おかげで@アレックスプロダクト。いくつかの日私はちょうど愚かに感じる。 –

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); 
    } 
    }, 
関連する問題