2014-11-23 34 views
0

滑動事件後,會話設置爲_id。然後,我將this._id傳遞給顯示#each項目內的按鈕的幫助程序。點擊這個按鈕後,模態將被打開,我可以刪除該項目。 的HTML代碼:流星session.set/get和jquery模態

<template name="territories"> 
<ul class="collection"> 
    {{#each territories}} 
     {{> item}} 
    {{/each}} 
</ul> 
</template> 

<template name="item"> 
<li class="collection-item hammerDiv"> 
     {{#if deletable}} 
      <a href="#delmodal" class="waves-effect modal-trigger-item btn flat">Cancella</a> 
     {{/if}} 
     <div>{{name}} - n.{{number}}<a href="{{pathFor 'owners'}}" class="secondary-content">{{owners.length}}</a></div> 
    </li> 
    <div id="delmodal" class="modal"> 
     <p>Sei sicuro di cancellare il territorio? Perderai tutte le note.</p> 
     <div class="row"> 
      <a href="#" id="dismiss-cancel" class="waves-effect btn flat modal_close">Annulla</a> 
      <a href="#" id="delTerr" class="waves-effect btn flat modal_close">Cancella</a> 
     </div> 
    </div> 

的JS代碼:

Template.territories.helpers({ 
    territories : function(){ 
     return Territories.find(); 
    } 
}); 

Template.item.helpers({ 
    deletable : function(){ 
     var thisTerr = Session.get('deletable-item'); 
     if (this._id == thisTerr){ 
      return true; 
     }else{ 
      return false; 
     } 

    } 
}); 

Template.item.events({ 
'swipeleft .hammerDiv': function(e, t) { 
     e.preventDefault(); 
     Session.set('deletable-item', this._id); 
    } 
}); 

Template.item.rendered = function(){ 
    //modal 
    $('.modal-trigger-item').leanModal(); 

    //swipe gesture on the item, works fine 
    $('li.hammerDiv').hammer({ 
     drag_min_distance:1, 
     swipe_velocity:0.1 
    }); 
}; 

模態只能當我在HTML中刪除{{#如果刪除的}}:在這種情況下,按鈕總是可見和模式正常工作。但是,當Session設置爲this._id時,我希望該按鈕出現在該項目內,然後單擊此處顯示該模式。 我認爲問題是DOM與Session.set的反應性。 我試圖申請thisthis建議沒有結果。 您的幫助表示讚賞。 ;-)

+0

嘗試console.log這兩個ID的助手,並檢查它們是否相同 – Sindis 2014-11-23 18:22:09

+0

是的,按鈕顯示/隱藏工作正常。問題是當我點擊按鈕時顯示模式。 Modal僅在我不使用session.set/get時出現 – Arcy 2014-11-23 18:26:11

+0

您的意思是您的'deletable'助手不能正常工作?這是我在寫這篇評論時所設想的。嘗試控制檯登錄this._id和Session.get來比較字段,也許這會讓你更接近答案 – Sindis 2014-11-23 18:28:21

回答

1

使壞我用了幾次是這樣的:

Template.item.helpers({ 
    deletable : function(){ 
     var thisTerr = Session.get('deletable-item'); 
     if (this._id == thisTerr){ 
      setTimeout(function() { $('.modal-trigger').leanModal(); }, 0); 
      return true; 
     }else{ 
      return false; 
     } 

    } 
}); 

,使得初始化插件的代碼立即DOM更新後火焰(當<a>元素是執行已經呈現)。

+0

它工作正常,謝謝@physiocoder – Arcy 2014-11-24 10:32:08