Backbone 0.9.9: różnica między listenTo a on
Staram się poznać nowe zmiany, które zrobili w Backbone 0.9.9.
Obecnie mam problemy ze zrozumieniem różnicy między listenTo
a on
:
ListenTo
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
On
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.model.on('change', this.render, this);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
Słyszałem, że listenTo
pozwala z stopListening
zrezygnować ze wszystkich zdarzeń, gdy na przykład Widok zostanie usunięty, aby uniknąć wycieków pamięci.
2 answers
listenTo
i stopListening
pochodzili ze społeczności, w zasadzie. Pomagają one ułatwić wiązanie i odłączanie zdarzeń.
Istnieje wiele istniejących dokumentacji i postów na blogu wokół tego pomysłu, w tym rzeczy, które napisałem na ten temat.
Johnny Oshika jest pierwszą osobą, którą zobaczyłem używając tej techniki. Został on pierwotnie opublikowany jako odpowiedź na pytanie StackOverflow tutaj: Backbone.js: ponownie zaludnić czy odtworzyć widok?You can read what I ' ve napisano o tym tutaj:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:39
Podczas tworzenia widoku zarówno listenTo
, jak i on
dodają obsługę zdarzeń. Jednak gdy Widok zostanie zniszczony, wywołanie {[0] } automatycznie usunie obsługę zdarzenia . To zapobiega wyciekom pamięci i słuchaczom zdarzeń zombie.
Więc użyj on
, jeśli chcesz samodzielnie zarządzać obsługą. Po prostu zadzwoń off
. W przeciwnym razie zadzwoń listenTo
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-02 13:30:48