2017-03-22 3 views
1

Ember와 관련된 문제가 발생합니다.이 경우 개체의 속성 (이 경우 filteredHeroes)을 변경 한 다음 계산 된 속성을 업데이트 된 버전으로 설정합니다. , 내 템플릿이 업데이트되지 않습니다. 작업을 호출 할 때 템플릿 변경을 개체 변경으로 강제로 적용하려면 어떻게해야합니까? 내 템플릿에서개체 속성 변경시 템플릿이 새로 고쳐지지 않습니다. (Ember 2)

, 나는이 : 어떤 도움

calculateStats() { 
     var heroes = this.get("filteredHeroes"); 

     var valueOfAttackSpeedPerCP = 5.5; 
     var valueOfPowerPerCP = 6; 

     var attackSpeed = this.get('cpAttackSpeed') * valueOfAttackSpeedPerCP; 
     var power = this.get('cpPower') * valueOfPowerPerCP; 

     for (var i = 0; i < heroes.length; i++) { 
      //Set Attacks per second for the specific hero 
      heroes[i]._data.AttacksPerSecond = (1/(heroes[i]._data.attributesByLevel[14]['BaseAttackTime']/((heroes[i]._data.attributesByLevel[14]['AttackSpeedRating'] + attackSpeed)/100))); 
     } 
     this.set('filteredHeroes', heroes); 
    } 

감사 : 내 컨트롤러에서

{{#each filteredHeroes as |hero index|}} 
{{hero._data.AttacksPerSecond}} 
{{/each}} 

내가 작업을 해!

+0

'Ember.set (heroes [i], '_ data.AttacksPerSecond', value)'를 사용하면 변경 사항이 템플릿에 반영됩니다. 당신도 시도해 볼 수 있습니다 notifyPropertyChange http://emberjs.com/api/classes/Ember.Object.html#method_notifyPropertyChange – kumkanillam

+0

@kumkanillam 환상적! 그 덕분에, 고마워! 당신이 대답을 게시 할 수 있다면 받아 들일 수 있습니다. 그렇지 않으면 그냥 게시하고 업데이트 된 코드로 받아들입니다. –

답변

1

Ember.Object을 처리하는 경우 변경 내용이 템플릿에 반영되고 해당 계산 된 속성 및 관찰자가 트리거되도록 getset 메서드를 사용해야합니다. 배열 조작을 위해, 당신은 당신이 변경 템플릿, 계산 된 속성과 관찰자가 관찰 할 수 있도록 정상 개체 또는 Ember.Object이, 당신은 항상 Ember.Set를 사용할 수 있는지 여부를 개체에 대해 확실하지 않은 경우 Ember.NativeArray

가능한 방법을 사용할 필요가 .

+1

변경하려면 Ember.set (heroes [i], '_ data.AttacksPerSecond', value)를 사용해야했습니다. 전체 객체를 설정하는 대신 하나의 속성 –