2013-10-22 4 views
0

Ember guide에 따르면이 스 니펫은 App.wife 인스턴스의 houseHoldIncome 속성을 설정해야합니다.Ember.js 바인딩 튜토리얼

App.wife = Ember.Object.create({ 
    householdIncome: 80000 
}); 

App.husband = Ember.Object.create({ 
    householdIncomeBinding: 'App.wife.householdIncome' 
}); 

App.husband.get('householdIncome'); // 80000 

// Someone gets raise. 
App.husband.set('householdIncome', 90000); 
console.log(App.wife.get('householdIncome')); // 90000 

console.log(App.wife.get('householdIncome')) 여전히 80000.이 때문에 바인딩이 immediatly 업데이트되지 않습니다 아니면 내가 뭔가 잘못하고 오전 출력?

편집 :
바인딩이 즉시 업데이트되지 않는 것으로 보입니다.

App.wife.addObserver('householdIncome', function() { 
    console.log('Wife income changed: '+App.wife.get('householdIncome')); 
}); 

업데이트 된 수입을 출력합니다.

답변

1

ember가 backburner이라는 lib를 사용하여 일부 변경 사항을 대기열에 넣으므로 예상되는 동작입니다. 이것의 장점은 예를 들어 foreach 같은 모델 속성의 여러 변경 사항이 한 번만 렌더링된다는 것입니다. 따라서 성능, 관찰자 ​​및 DOM 업데이트에 신경 쓸 필요가 없습니다.

당신은 당신이 변경 사항이 전파되는 것을 볼 수 있도록 플러시 바인딩을 강제 할 수 Ember.run.sync() 사용하는 경우 : 그 바이올린에

App.wife = Ember.Object.create({ 
    householdIncome: 80000 
}); 

App.husband = Ember.Object.create({ 
    householdIncomeBinding: 'App.wife.householdIncome' 
}); 

App.husband.get('householdIncome'); // 80000 

// Someone gets raise. 
App.husband.set('householdIncome', 90000); 
Ember.run.sync(); 
console.log(App.wife.get('householdIncome')); // 90000 

은 업데이트중인 아내 householdIncome 속성을 볼 수 http://jsfiddle.net/marciojunior/uCr3C/