Istnieje kilka różnych miejsc, które kładę widoku pomocników z backbone.js:
Jeśli pomocnik jest specyficzne dla pewnej wizji, umieścić go bezpośrednio w definicji widoku:
var MyView = Backbone.View.extend({
tagName: 'div',
events: {
...
},
initialize: function() { ... },
helperOne: function() {
// Helper code
},
anotherHelper: function() {
// Helper code
},
render: function() {
... this.helperOne() ...
}
});
Jeśli pomocnik będzie używany przez wszystkich poglądów, rozszerzyć Backbone Zobacz klasę tak, że wszystkie poglądy dziedziczą tę funkcję:
_.extend(Backbone.View.prototype, {
helper: function() {
// Helper code
}
}
Jeśli potrzebujesz bardziej skomplikowaną wymianę poglądów między pomocników, roztacza się rozciągać siebie:
var MyOtherView = MyView.extend({
// ...
render: function() {
... this.helperOne() ...
}
});
Nie jestem pewien, co jest najlepsze praktyki (lub jeśli istnieje stała najlepsze praktyki), ale te wzory wydają się dość czyste i działają dobrze.
Możliwe jest również, aby zrobić wstawek (tj mieć metody klasy "mixin" z kolekcji klas w razie potrzeby), a nawet programowanie aspektowe (mieć pojedyncze wywołanie funkcji zastąpić kolekcję klas, zawijając metodę docelową inną metodą). –
+1 za rozszerzenie klasy Backbone View – isNaN1247
Hmm, użycie 'tego' w 'extend' nie działało dla mnie, ale' ten .__ proto__' działał. Czy metody '__proto__' nie powinny działać z tym właśnie' tym "? Np. 'This.myMethod()' w przeciwieństwie do 'this .__ proto __. MyMethod()'. Dla mnie ten drugi działa, ale ten pierwszy zawodzi. –