Frage

Ich habe mit einer Aussicht und einem verwandten Modell herumgespielt, das so aussieht:

App.Views.Addresses         = App.Views.Addresses || {};
App.Views.Addresses.Address = Backbone.View.extend({

  events: {
    "click button#foo"             : "clear"
  },

  initialize: function(model){
                this.address = model.model;
                this.address.view = this;
                _.extend(this, Backbone.Events);
                this.render();
              },

  render:     function(){
                ... rendering stuff
              },

  clear:      function(){
                this.address.clear();
              }
});

und

var Address = Backbone.Model.extend({

  url:   function() {
           ... url stuff
         },

  clear: function(){
           this.destroy();
           this.view.remove();
         }
});

Ich habe hier zwei Probleme. Der erste:

Ich habe eine Schaltfläche mit id = "foo" in meiner Quelle und möchte, dass die Ansicht das Ereignis "Klick" dieses Ereignisses dieses Ereignisses "Clear" abfängt. Problem: Dies funktioniert nicht.

Wie auch immer, das Aufrufen von "Löschen" auf meinem Modell von Hand entfernen die Daten auf dem Server, entfernen jedoch nicht die Ansicht selbst. Das ist das zweite Problem. Hoffentlich kann mich jemand erfahrener erleben.

Danke im Voraus Felix

War es hilfreich?

Lösung

Erstes Problem:

  • Ihre Schaltfläche muss sich in dem von der Ansicht gerenderten Element befinden.
    • Backbone Scope -Ereignisse nur für innere Elemente
  • Sie müssen Ihre Ansicht innerhalb dieses Elements in diesem.
    • Rückgrat Verwenden Sie dieses Element für die Delegation

Zweites Problem:

  • Verwenden Sie Ereignisse, um Ihre Ansicht zu zerstören
    • Sie sollten die Ansicht im Modell nicht speichern. Dies ist eine Art "Nein Nein" in MVC. Ihr Modell gibt beim Löschen bereits ein "Entfernen" -Ereignis aus. Ihre Ansicht sollte es hören und sich entsprechend verhalten.
  • Sie müssen Ihr Ansichtselement selbst aus dem DOM selbst entfernen
    • Dies wird nicht mit dem Rückgrat behandelt.

Andere allgemeine Kommentare:

  • Die Ansichten erweitern bereits das Rückgrat.Events
  • Verwenden Sie dies.model anstelle deshalb.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top