Korzystając z aplikacji Backbone.js zauważyłem, że zarówno widoki, jak i modele mają podane wartości. Rozumiem, że jeśli te klasy są częścią kolekcji, mogę je pobrać dowolną z nich przez collection.getByCid. Czy jest możliwe wyciągnięcie dowolnej klasy, poza kolekcją, biorąc pod uwagę jej identyfikator, używając Backbone? Na przykład, jeśli mam MyObject.Views.Tree = Backbone.View.extend({ });
, mogę utworzyć nowy widok drzewa z var tree = new MyObject.Views.Tree();
. Wywołanie tree.cid
zwraca określony identyfikator - coś takiego jak view231
. Czy istnieje sposób odwoływania się do mojego widoku drzewa z podaniem tylko jego cid? Może być globalna metoda Backbone.getByCid?Jak mogę wyciągnąć dowolną klasę przez jej cid w Backbone?
Odpowiedz
nr
myślę, że masz lekkie nieporozumienie modelu programowania kręgosłup, a także JavaScript w ogóle. Szkielet nie śledzi tego, co tworzysz; pomaga tylko tworzyć obiekty z określonymi prototypami (modele, kolekcje itp.). W ogóle nie obchodzi ich, co z nimi robisz. CID jest po prostu wygodną metodą, którą możesz użyć do indeksowania i odsyłania, ale musisz sam napisać indeksy i odsyłacze.
Jeśli więc utworzysz obiekt i nie będziesz go gdzieś przechowywać (w kolekcji, na routerze, w innym obiekcie), stanie się on niedostępny, a maszyna wirtualna JavaScript w końcu go wyrzuci.
Zepsute urządzenie ExtJS i poczułem potrzebę odtworzenia czegoś podobnego do szkieletu. Może to ci pomoże? Nie testowałem tego zbyt wiele, ale to bardzo prosta zmiana. Po prostu zachowaj ostrożność, tworząc wiele rzeczy i nie usuwając ich, lub będziesz miał kilka zarejestrowanych obiektów pochłaniających pamięć.
Backbone.View.Registry = {
items: {},
register: function (id, object) {
this.items[id] = object;
},
lookup: function (id) {
return this.items[id] || null;
},
remove: function (id) {
delete this.items[id];
}
}
Backbone.RegisteredView = Backbone.View.extend({
initialize: function() {
Backbone.View.prototype.initialize.apply(this);
this.cid = this.options.id || this.cid; //just in case you want to assign a unique ID and lookup from that.
Backbone.View.Registry.register(this.cid, this);
},
remove: function() {
Backbone.View.prototype.remove.apply(this);
Backbone.View.Registry.remove(this.cid);
return this;
}
});
test = Backbone.RegisteredView.extend({
intialize: function() {
return $("<div></div>"); //Just return something for this example
}
});
div1 = new test({id: 'header_pane'});
div2 = new test();
console.log(Backbone.View.Registry.items); //Will have the header_pane and a cid based obj in it
ref = Backbone.View.Registry.lookup('header_pane');
console.log(ref); //Will be the header_pane object
div1.remove();
console.log(Backbone.View.Registry.items); //Will only have the cid based object in it
- 1. Jak mogę wyciągnąć artefakty z TeamCity?
- 2. Jak mogę wyciągnąć klucz powtarzalny z JSON?
- 3. Jak mogę uzyskać rdzenną jednostkę danych przez jej objectID?
- 4. Spychacz próbujący odwzorować klasę na jej interfejs
- 5. Jak wyciągnąć metodę z jej klasy (i do nowej lub istniejącej)?
- 6. jak wyciągnąć automatów w java
- 7. Pamięć używana przez dowolną aplikację iPhone'a
- 8. podzielić ciąg przez dowolną liczbę pomieszczeń
- 9. Odwróć trasę w Backbone js
- 10. Jak mogę rzucić klasę Java w Clojure?
- 11. Używanie Unity, Jak mogę autoregryfikować klasę ogólną z interfejsem generycznym bez rejestrowania KAŻDEGO jej typu.
- 12. Jak wyciągnąć usunięcie gałęzi w git?
- 13. Jak mogę wyciągnąć tablicę ciągów znaków z tego obiektu Json?
- 14. Zaprojektuj klasę zmienną, która po jej zużyciu stanie się niezmienna.
- 15. Jak mogę rzutować dowolną płaszczyznę zidentyfikowaną przez 4 punkty na płaszczyznę 2d?
- 16. Backbone toJSON
- 17. Jak wyciągnąć podczas wdrażania w ansibla
- 18. metoda połączenia i wyciągnąć
- 19. Backbone filtrowanie
- 20. IntelliJ POMYSŁ: Czy istnieje sposób na listowanie wszystkich interfejsów zaimplementowanych przez klasę i jej rodziców?
- 21. Jak ustawić dowolną macierz przekształceń w widoku?
- 22. Jak obliczyć dowolną moc/root?
- 23. Jak najlepiej symulować dowolną losową zmienną jednowymiarową za pomocą jej funkcji prawdopodobieństwa?
- 24. Test obciążenia aplikacji Backbone
- 25. Jak mogę dodać klasę do CodeIgniter Anchor
- 26. Bootstrapping a Backbone application
- 27. Jak utworzyć listę C# tylko przez deklarowanie jej atrybutu zestawu
- 28. Jak mogę wymusić typ tablicy po jej zainicjowaniu w Scali?
- 29. Czy można zgłosić klasę bez jej implementacji? (C++)
- 30. Jak połączyć dowolną bibliotekę w aplikacji ndk
Ah, dzięki. Miałem nadzieję na coś innego, ale muszę po prostu przerobić, jak sobie radzę. Dzięki jeszcze raz. –