Sul mio primo evento aprirò una finestra di dialogo mbox. mbox è una sorta di estensione per il bootbox, che è per mostrare una modale. Ho bisogno di mbox per usare un altro modello come contenuto modale.Chiudi modal che è stata creata in un'altra funzione evento
Quindi nel file modale verrà caricato il contenuto di createElement-Template. Se l'utente ha apportato alcune modifiche di input, la modale dovrebbe essere chiusa. Quindi c'è la funzione modal("hide")
. Ma come bbox
è stato impostato nel primo evento di modello e la chiusura del modale verrà eseguita nel secondo evento di modello, ho avuto problemi a chiudere la modal.
eventi
Template.main.events({
'submit form': function(event, template) {
event.preventDefault();
var bbox = mbox.dialog({
title: 'title',
message: Template.createElement
});
}
});
Template.createElement.events({
'change input': function(event, template) {
bbox.modal('hide');
}
});
UPDATE
Il problema di cui sopra funziona con una var globale. Grazie a Adam per quello.
Ma non mi piacerebbe distruggere una modale in un pacchetto di meteora, che è stato creato da un altro pacchetto . Ho provato a utilizzare una variabile globale e ho provato a utilizzare api.export()
. Ma ancora non funziona. Ho anche provato a lavorare con Sessions.
pacchetto-graph/lib/client/graph.js
var bbox;
CanvasManager = {
onShowAddToolTip (element) {
bbox = mbox.dialog({ // <-- Create Modal
title: "Title",
message: Template.search, // <-- Loading Template search with just one input field with typeahead
});
},
}
CanvasManger.create(...);
pacchetto-graph/lib/package.js
api.export('bbox');
Il secondo pacchetto prevedono la typeahead-searchbox (sergeyt:typeahead
). Creando il modale nel primo pacchetto, il modello verrà caricato nel modale (helloludger:mbox
). Ora l'utente può cercare tramite typeahead e selezionare un oggetto. Dopo la selezione la modale dovrebbe essere distrutta da `modal ('nascondi').
pacchetto-ricerca/lib/client/events.js
Template.searchMain.onRendered(function() {
Meteor.typeahead.inject();
});
pacchetto-ricerca/lib/client/helper.js
Template.search.helpers({ // <-- getting the data for the input typeahead
searchData: function() {
return [
{
name: 'cat1',
valueKey: 'title',
displayKey: 'title',
header: '<h3 class="category-name">Category</h3>',
template: 'searchResults',
local: function() {
return Collection.find().fetch();
}
}
]
},
selected: function(event, suggestion) { // <-- by selecting an item, I can process the data and remove the modal
// do something
bbox.modal('hide'); // <!-- destroy modal
return;
}
}
});
Potresti anche postare l'HTML? In Meteor è possibile condividere e accedere agli oggetti di stato sull'istanza del modello tramite Template.instance(). –
Se rimuovi la var di fronte a bbox dovresti riuscire ad accedervi attraverso i file. Prova a cambiare var bbox; a bbox = null; –