Nach dem Render-Ereignis auf CompositeView mit Rückgrat.Marionette
Habe ich eine Marionette CompositeView mit einem Suchfeld und der Erhebung der Ergebnis-Daten.
Ich möchte eine Funktion aufrufen, wenn:
- der Suche panel gerendert wird.
- die Sammlung ist noch nicht gerendert.
- diese Funktion sollte nicht aufgerufen werden, wenn die Kollektion dargestellt wird.
Habe ich es in dieser Weise: (aber "afterRender" Funktion zweimal aufgerufen)
//VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
//TEMPLATE
template: Handlebars.compile(templates.find('#composite-template').html()),
//ITEM VIEW
itemView: App.Item.View,
//ITEM VIEW CONTAINER
itemViewContainer: '#collection-block',
//INITIALIZE
initialize: function() {
this.bindTo(this,'render',this.afterRender);
},
afterRender: function () {
//THIS IS EXECUTED TWICE...
}
});
Wie kann ich dies tun?
==========================BEARBEITEN==================================
Ich löste es auf diese Weise, wenn Sie haben eine Beobachtung, lassen Sie es mich bitte wissen.
//VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
//INITIALIZE
initialize: function() {
//this.bindTo(this,'render',this.afterRender);
this.firstRender = true;
},
onRender: function () {
if (firstRender) {
//DO STUFF HERE..............
this.firstRender = false;
}
}
});
Bitte geben Sie einige details über Ihre Veranstaltung-Bindungen, und wenn reneder genannt wird
Es ist in der initialize-Funktion: ".bindTo(this,'render',diesem.afterRender)". Ich bin mir nicht sicher, ob das richtig ist, aber was ich will zu tun ist, rufen Sie "afterRender" - Funktion, nachdem die view gerendert wird
Es ist in der initialize-Funktion: ".bindTo(this,'render',diesem.afterRender)". Ich bin mir nicht sicher, ob das richtig ist, aber was ich will zu tun ist, rufen Sie "afterRender" - Funktion, nachdem die view gerendert wird
InformationsquelleAutor Jaime Rivera | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Marionette bietet eine
onRender
Methode gebaut, um alle seine Ansichten, so dass Sie können loszuwerden, diethis.bindTo(this, 'render', this.afterRender)
nennen:Aber um es zu bekommen, um nicht die Arbeit machen, wenn die Sammlung nicht wiedergegeben, müssen Sie Logik, um die onRender-Methode, die prüft, ob oder ob nicht die Sammlung erbracht wurde.
Dieser hängt weitgehend davon ab, was Sie zu tun versuchen mit dem Rendern, wenn keine Elemente gerendert werden, die aus der Sammlung.
Zum Beispiel... wenn Sie wollen, machen eine "Keine Artikel Gefunden" angezeigt wird, können Sie mit der eingebauten
emptyView
Konfiguration für die composite-Ansicht.Aber wenn Sie einige spezielle Codes, die ausgeführt werden muss und bestimmte Dinge tun, die nicht unter diese option, dann haben Sie, um in einige Logik Ihrer eigenen.
d ' Oh! ja, Mach das 🙂
InformationsquelleAutor Derick Bailey
Verwenden Sie einfach
onShow
Funktionhttp://marionettejs.com/docs/marionette.view.html#view-onshow
InformationsquelleAutor nothing-special-here