Görünüm yardımcı olduğu ve Backbone.js model nesneleri | Netgez.com
SORU
11 EYLÃœL 2011, Pazar


Görünüm yardımcı olduğu ve Backbone.js model nesneleri

Hangi gerektiğinde model/view örnekleri imha etmek için en etkili yoldur?

Genellikle, denetleyici/yönlendirici mantığı koydum. Bu görüş oluşturulmalıdır ne karar verir, ve onlar için sağlanan ne olması gerektiğini. Genellikle, birkaç işleyici işlevleri, bir işleyici idam geldiğinde yeni bir görünüm örneklerini her zaman yaratıyorum farklı kullanıcı eylemleri veya yolları, karşılık vardır. Tabii ki, bu daha önce görünüm örneği depoluyordum ne varsa ortadan kaldırmak gerekir. Ancak, bazı görüş DOM olay işleyicileri kendilerini tutmak zaman bazı durumlar vardır ve bu durumlarda hayatta olmanın sonuçları düzgün unbinded, anlamıyorlar. Örneğin kendi el (DOM temsili) müstakil gelince görüntülemek örnekleri yok etmek için uygun bir yol olsaydı orada keşke, ya da DOM dışarı atılır

CEVAP
12 EYLÃœL 2011, PAZARTESÄ°


doğru yolda değilsin. görüşlerinizi yaşam döngüsünü kontrol eden bir nesne olması gerekir. benim görüşüme göre bu koymak için sevmiyorum. bunun için ayrı bir nesne oluşturmak istiyorum.

yapmanız gereken şey, gerektiğinde olayları kesin. bunu yapmak için, "yakın" görüşleriniz tüm yöntem, ve her şeyin yaşam döngüsü denetleyen bir nesne kullanın her zaman yakın bir yöntemini çağırmak için. bir oluşturmak için iyi bir fikirdir

örneğin:


  function AppController(){
    this.showView = function (view){
      if (this.currentView){
        this.currentView.close();
      }
      this.currentView = view;
      this.currentView.render();
      $("#someElement").html(this.currentView.el);
    }
  }

bu noktada, eğer ki kurmak kodunuzu sadece bir örnek AppController ve her zaman arama appController.showView(...) router ya da başka bir kod ihtiyacı göstermek için bir görünüm #someElement bölümü ekrana.

(bir kullanan çok basit bir omurga uygulaması sadece bir örnek var "" (app ana bölümünde çalışan bir omurga görünümü), burada: http://jsfiddle.net/derickbailey/dHrXv/9/ ) AppView

close yöntemi bir kendine, her görünüm için oluşturmak gerekiyor, bu yüzden varsayılan görünümler mevcut değil. Her zaman yakın yöntem olması gereken iki şey vardır: this.unbind() this.remove(). eğer herhangi bir model veya koleksiyon olaylara sizin bakış bağlama Eğer bunlara ek olarak, yakın bir yöntem onları kesin.

örneğin:


  MyView = Backbone.View.extend({
    initialize: function(){
      this.model.bind("change", this.modelChanged, this);
    },

    modelChanged: function(){
      // ... do stuff here
    },

    close: function(){
      this.remove();
      this.unbind();
      this.model.unbind("change", this.modelChanged);
    }
  });

bu doğru temiz tüm yaşanan olaylardan DOM () this.remove()), tüm olayları görüntülemek kendisi olabilir yükseltmek () this.unbind()) ve olay görünümü bağlanmış bir model () this.model.unbind(...)).

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • kev5124

    kev5124

    9 Kasım 2008
  • Ryan Ha

    Ryan Ha

    9 NÄ°SAN 2006