Czy w niektórych przypadkach możemy uniknąć uruchamiania obserwowalnego kodu?Jak ustawić właściwość, która jest obserwowalna, ale nie działa funkcja obserwowalna dla kilku przypadków w EmberJS
Jak próbowałem? Jedyny sposób, którego uniknąłem, polega na dodaniu do widoku nowych właściwości jako flag, które zostaną zaznaczone przed uruchomieniem obserwowalnego kodu metody.
Jest to podstawowa jsfiddle Link dostarczam z podstawowych funkcji obserwatora HTML
<script type="text/x-handlebars" data-template-name="application">
{{view MyApp.MyContainerView name="Santa Claus"}}
</script>
<script type="text/x-handlebars" data-template-name="foo">
{{view.testProp}}
</script>
JS
MyApp = Ember.Application.create({
autoinit: false
});
MyApp.router = Ember.Router.create({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/'
})
})
});
MyApp.ApplicationController = Ember.Controller.extend({});
MyApp.MyContainerView = Em.ContainerView.extend({
childViews: ['foo'],
foo: Em.View.extend({
testProp: 100,
testPropObservable: function(){
console.log("Prop Observed");
}.observes('testProp'),
init: function() {
this._super();
this.set('testProp', 200);//i want to avoid obeserver here
},
templateName: 'foo'
})
});
MyApp.initialize(MyApp.router);
Yea h, byłeś po prostu szybszy :), +1 BTW :) –
ten kod był tylko przykładem do pracy nad nim ... i zgadzam się, że możemy dodać obserwatora podczas inicjalizacji ... chciałbym wiedzieć, czy jest i tak możemy uniknąć połączenie z obserwatorem przed ustawieniem wartości w obiekcie ... – thecodejack
Nie jesteś pewien, o co dokładnie pytasz. "Zadaniem" obserwatora jest uzyskanie powiadomienia, gdy właściwość ulegnie zmianie. Na pewno można uniknąć połączeń z obserwatorami, czekając do ich późniejszego utworzenia, jak w powyższym przykładzie. Odmianą byłoby mieć obserwatora, który dodaje innego obserwatora i może sam siebie usuwa. Dzięki temu można "uniknąć" głównego obserwatora na początkowym zestawie nieruchomości. Czy to właśnie zamierzasz? –