2016-04-18 27 views
0

我使用了以下內容:流星 - 如何在bootbox中使用Blaze.renderWithData並使結果保持反應?

let box = bootbox.dialog({title:'',message:''}); 
box.find('.bootbox-body').remove(); 
Blaze.renderWithData(template,doc,box.find(".modal-body")[0]); 

它呈現正確,但不具有反應性。

我懷疑我有一個問題直接在文檔中傳遞,並有文檔的_id可用。

我應該傳遞renderWithData以使結果成爲反應?

回答

0

,我發現我的解決方案。

而不是

let doc = MyCollection.findOne({_id}); 
Blaze.renderWithData(template,doc,box.find(".modal-body")[0]); 

或者

Blaze.renderWithData(template,MyCollection.findOne({_id}),box.find(".modal-body")[0]); 

我改用

Blaze.renderWithData(template,function(){ 
    MyCollection.findOne({_id}) 
},box.find(".modal-body")[0]); 

這現在使對話框反應。

0

如果在bootbox之前的代碼中有doc = MyCollection.findOne(...)那麼doc將被動。否則,你可以通過在_id和模板助手(要傳遞到Blaze.render()的一個執行.find()

+0

1)實際上,doc是使用doc = MyCollection.findOne({_ id})加載的,但將結果傳遞給Blaze.renderWithData,它不再是被動的。 – dpatte

+0

2)我不知道如何將_id傳遞到Blaze.renderWithData。它期望的是數據,而不是_id。 – dpatte

+1

取決於如何設置模板以及它的助手是什麼。它期待一個_data context_,它可以是從遊標到對象數組到單個對象到標量值的任何事物。 –