2016-05-31 73 views
0

點擊我的按鈕顯示並隱藏包含註釋部分的div。現在我想讓他在點擊時改變文字。所以,你點擊一次,你可以看到評論,但不是「顯示評論」他現在需要的文本是'隱藏評論'。我嘗試了幾種在互聯網上找到的解決方案,以及一些邏輯解決方案,但這些解決方案無法正常工作。我也試過this,但它說SetSession沒有定義。用JS改變流星按鈕文字

模板:

<template name="PrikažiMe"> 

<button class="PrikažiKomentar"> {{текст}} </button> 

</template> 

JS

if (Meteor.isClient) { 


    /* Template.PrikažiMe.onCreated(function() { 
     Session.set(текст , 'Прикажи коментаре'); // <---- This part makes like everything is unpublished 
    }); */ 


    Template.PrikažiMe.events({ 
     'click .PrikažiKomentar': function(){ 

     if (document.getElementById(this._id).style.display == "none") 
      { document.getElementById(this._id).style.display = "inline-flex", SetSession (текст, 'Сакриј коментаре');} 
     else {document.getElementById(this._id).style.display = "none", SetSession (текст, 'Прикажи коментаре'); } 
     }, 
    }); 

    Template.PrikažiMe.helpers({ 
     текст: function(){ 
     return Session.get(текст); 
     }, 
    });  
}; 

回答

0

所以,我發現了什麼問題。希望這將有助於未來的人。看代碼:

模板:

<button class="PrikažiKomentar"> {{#if текст}}Сакриј коментаре {{else}} Прикажи коментаре {{/if}} </button> 

</template> 

JS:

if (Meteor.isClient) { 

    Template.PrikažiMe.onCreated(function PrikažiMeOnCreated() { 
     this.текст = new ReactiveVar(false); 
    }); 

    Template.PrikažiMe.events({ 
     'click .PrikažiKomentar': function(event, template){ 
     if (document.getElementById(this._id).style.display == "none") 
      { document.getElementById(this._id).style.display = "inline-flex", template.текст.set(true);} 
     else {document.getElementById(this._id).style.display = "none", template.текст.set(false);} 
     }, 
    }); 

    Template.PrikažiMe.helpers({ 
     текст: function() { 
       return Template.instance().текст.get(); 
     }, 
    });  
}; 
1

你不應該HTML/CSS從JavaScript改變,而不是處理,在您的模板。

下面是未經測試的代碼示例。它也依賴於包reactive-var

<template name="t"> 
    <button id="b">{{#if isButtonActive}}Active!{{else}}Not active{{/if}}</button> 
</template> 
Template.t.onCreated(function(){ 
    this.isButtonActiveReactiveVar = new ReactiveVar(false) 
}) 

Template.t.helpers({ 
    'isButtonActive': function(){ 
    return Template.instance().isButtonActiveReactiveVar.get() 
    } 
}) 

Template.t.events({ 
    'click #b': function(event, template){ 
    template.isButtonActiveReactiveVar.set(!template.isButtonActiveReactiveVar.get()) 
    } 
}) 
+0

我有錯誤,模板沒有定義。沒有機會這樣做..沒有辦法做到這一點,就像我上面開始? –

+0

@Peppe解決方案更好,並遵循「流星方式」。檢查你的「PrikažiMe」是否很好地替換了「t」模板名稱示例。建議,避免對變量名稱的怪異口音... –

+0

@НиколаДашић,是的,你可以這樣做,但是我根本不會使用Meteor,只能用普通的HTML和JS代替。 –