2011-08-26 11 views
5

Backbone.js'yi kullanırken, hem görünümlerin hem de modellerin ipucu verildiğini fark ettim. Bu sınıfların bir koleksiyonun parçasıysa, bunlardan herhangi birini collection.getByCid ile çekebileceğimi anlıyorum. Omurga verilen koleksiyonunun dışındaki herhangi bir sınıfı 'un Backbone? Örneğin, MyObject.Views.Tree = Backbone.View.extend({ }); varsa var tree = new MyObject.Views.Tree();'dan yeni bir Ağaç görünümü oluşturabilirim. tree.cid numaralı çağrı, belirli bir ipucu döndürür - view231 gibi bir şey. Ağacımıza sadece cid verilen referansı göstermenin bir yolu var mı? Belki de global bir Backbone.getByCid yöntemi?Omurgadaki herhangi bir sınıfa nasıl bir belkemiği çekebilirim?

cevap

6

sayılı

Sana omurga programlama modelinin hafif yanlış anlama var, hem de JavaScript gibi genel olarak düşünüyoruz. Omurga yarattığınız şeyin kaydını tutmaz; Yalnızca belirli prototiplere sahip nesneler oluşturmanıza yardımcı olur (Modeller, Koleksiyonlar vb.). Onlarla ne yaptığının hiç umrunda değil. CID sadece indeksleme ve çapraz referanslama için kullanabileceğiniz bir kolaylık yöntemidir, ancak indeksleri ve çapraz referansları kendiniz yazmanız gerekir.

Bir nesne oluşturursanız ve bir yere bir referans tutmazsanız (bir koleksiyonda, yönlendiricinizde, başka bir nesnede), erişilemez duruma gelir ve JavaScript VM bunu toplayacaktır.

+0

Ah, teşekkürler. Başka bir şey için umuyordum, ama ben sadece bir şeyler yapıyorum. Tekrar teşekkürler. –

7

ExtJS beni şımarttı ve Backbone için benzer bir şeyi yeniden oluşturma ihtiyacını hissettim. Belki bu da sana yardım eder mi? Çok fazla test etmedim, ama çok basit bir değişiklik. Sadece bir sürü şey oluşturmaya ve onları kaldırmaya dikkat edin, yoksa hafızayı tüketen bir grup kayıtlı nesneye sahip olursunuz.

İlgili konular