Ember에 대한 속성 관찰자와 몇 가지 비정상적인 행동이 발생합니다. 행동의 코드에 대해이 jfiddle를 참조하십시오 : 두 속성을 동시에 업데이트 될 때Ember.js 속성 관찰자 비정상적인 행동
- 관찰자는 두 가지 속성을 시계 http://jsfiddle.net/sBVtJ/3/, 그것은 두 번 발사됩니다.
- 관측자가 컨트롤러에 다른 경로를 설정하면 해당 관측자가 활성 (예상) 될 때까지 시작되지 않습니다. 그러나 그 길을 떠날 때, 관찰자는 계속해서 발사 할 것입니다.
더 많은 토론 2 : 앱을 처음로드 할 때 "여러 속성 변경 작업"을 클릭하면 속성이 증가하기 시작합니다. 그러나 관찰자는 해고되지 않습니다. 이제 관찰자 경로로 이동하십시오. 속성을 증가 시키면 관찰자가 시작됩니다. 그런 다음 색인 경로로 다시 이동하십시오. 관찰자는 재산 증가에 대해 계속해서 사격 할 것입니다. 이제 특성이 두 경로 중 하나에서 증가 될 때마다 관찰자가 해고됩니다. 내 의도 된 동작은 관찰자 경로가 활성화 된 경우에만 관찰자를 시작하는 것입니다. 이것을 달성하기위한 어떤 방법이라도?
그리고 행동에 대한 나의 질문 1 : 관찰자는 속성이 업데이트 될 때마다 두 번 동시에 업데이트됩니다. 두 개의 속성을 동시에 업데이트하는 경우 관찰자에게 한 번만 발사 할 수 있습니까?
App = Ember.Application.create();
App.Router.map(function(){
this.resource('observer');
});
App.Router.reopen({location:'none'});
App.ApplicationController = Ember.Controller.extend({
consoleProp: function(){
console.log(this.get('controllers.application.prop1'));
},
changeTwoProperties: function(){
this.get('controllers.application').incrementProperty('prop1');
this.get('controllers.application').incrementProperty('prop2');
},
prop1:0,
prop2:0
});
App.IndexController = Ember.Controller.extend({
needs: ['application'],
changeTwoPropertiesBinding: 'controllers.application.changeTwoProperties',
consolePropBinding: 'controllers.application.consoleProp'
});
App.ObserverController = Ember.Controller.extend({
needs: ['application'],
changeTwoPropertiesBinding: 'controllers.application.changeTwoProperties',
consolePropBinding: 'controllers.application.consoleProp',
theObserver: function(){
console.log('observer fired');
}.observes('controllers.application.prop1', 'controllers.application.prop2')
});
시몬 : 비슷한 문제가 있습니다. 'Ember.run'과 통신하는 것을 포함하여 모든 것을 시도했지만 아무 소용이 없습니다. 'hasChanged' 메소드가 3 번 업데이트가 모두 끝난 후에 한 번만 실행된다면 좋을 것입니다 : http://jsfiddle.net/V29Nu/1/ – Wildhoney
@Wildhoney 3 번에서 변경 사항을 관찰 할 수 있다고 생각하지 않습니다. 1) 하나의 변경으로 다른 컨트롤러. –