観測可能なコードを実行することはほとんどありませんか?EmberJSで観測可能なプロパティを設定する方法はほとんどありません。
どのように試しましたか? 私が避けなければならない唯一の方法は、オブザーバブルメソッドコードを実行する前にチェックされたフラグとして、ビューに新しいプロパティを追加することです。
これは基本的なjsfiddleリンクですが、JS基本的なオブザーバー機能 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>
を提供しています
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);
いや燃えさしガイドのオブザーバーのあなたはちょうど高速でした:) +1 BTW :) –
そのコードはちょうどそれに取り組むための例だった..私は初期化中にオブザーバーを追加することができることに同意する...私はとにかく私たちが避けることができるか知りたいプロパティに値を設定する前にオブザーバーを呼び出す... – thecodejack
正確に何を求めているのかよく分かりません。オブザーバーの「仕事」は、プロパティーが変更されたときに通知を受け取ることです。上記の例のように、後で作成するまで待ってオブザーバーへの呼び出しを避けることができます。バリエーションは、他のオブザーバーを追加し、おそらくそれ自体を削除するオブザーバーを持つことです。その場所で、あなたはプロパティの最初のセットで主なオブザーバーを '避ける'ことができます。それはあなたのために行くのですか? –