2015-04-23 72 views
0

我使用流星和引導,與nemo64:bootstrap包警報closed.bs.alert不會觸發。在custom.bootstrap.json我有「警報」和「警報」。流星+引導 -

我試圖捕捉closed.bs.alert事件模板事件。出於某種原因,它不會捕獲。

Template.alert.events({ 
    'closed.bs.alert .alert': function() { 
     console.log('closed'); // does not trigger 
    } 
}); 

奇怪的是,close.bs.alert做工作:

Template.alert.events({ 
    'close.bs.alert .alert': function() { 
     console.log('closed'); // triggers 
    } 
}); 

而且,如果我添加通過jQuery的事件,我可以捕捉closed.bs.alert

$('.alert').on('closed.bs.alert', function() { 
    console.log('closed'); // triggers 
}); 

所以,我知道我有我的事件格式正確,我知道closed.bs.alert事件正在觸發...但由於某種原因,我無法用Template.alert.events捕捉它。

任何想法?

回答

1

我一頭到引導代碼,發現它觸發此事件:alert.js, line 50

首先,我得到了技術工作:

Templates.alert.onRendered({ 
    $('.alert').on('closed.bs.alert', function (e) { 
     console.log('closed'); // triggers =D 
    }); 
}); 

我認爲問題在於這樣一個事實:引導程序在觸發事件之前分離警報,因此$(document).on('closed.bs.alert', '.alert')等事件無法工作。我當然不知道100%,但我懷疑Meteor的觸發器也使用了非常相似的方法。

通常這會工作:

$(function() { 
    $('.alert').on('closed.bs.alert', function() { 
     console.log('closed'); // doesn't trigger 
    }); 
}); 

然而,流星拋出一個扳手到該計劃,因爲我加載從數據警報,它們不存在時會觸發。

但是,通過在Template.my_template.onRender()中加入jQuery風格的on()似乎可以做到這一點。

此外,引導不丟的情況下,除非警報具有「變臉」類。您可以分配漸變類而不包括「過渡」模塊。如果你離開它,你只是不會得到效果,但事件可以不管。

+0

這就是我也試過,但它不適合我。還有什麼我需要注意的?我得到了淡入淡出的類,並且把事件處理器放在了onRendered中。我使用的是官方的twbs:bootstrap包,而不是nemo64的,但我已經驗證了用於警報處理的JavaScript已加載。 – illuminaut

+0

我只是用nemo64重新創建了同樣的問題:bootstrap,我可以捕獲close.bs.alert事件,但不是closed.bs.alert,所以我假設問題是當事件發生時已經移除了dom元素被解僱。 – illuminaut

+0

@illuminaut確保已將「淡入淡出」類添加到元素。如果它不存在,'closed.bs.alert'類永遠不會被觸發。 (請參閱我鏈接的文件的第53行)。如果不是這樣,我建議打開一個新問題,以便發佈代碼示例。 – samanime