2015-12-17 9 views
5

मैं एक प्रतिवाद है कि मैं हाल ही में मेरी कोड में पेश खत्म करने के लिए कोशिश कर रहा हूँ और मैं कुछ मदद की जरूरत है।एंबर एंबर-views.render-डबल को संशोधित निंदा

प्रतिवाद है:

आप संशोधित ... दो बार एक भी में प्रस्तुत करना। यह एंबर 1.x भरोसेमंद नहीं रहीं और 2.0 एंबर में निकाल दिया जाएगा [प्रतिवाद आईडी: एंबर-views.render-डबल को संशोधित]

स्कोर की एक सूची प्रदर्शित और फिर मुझे क्या करना कोशिश कर रहा हूँ है कुल स्कोर। मुझे सबसे कम स्कोर छोड़ना है और इसे गणना कुल में शामिल नहीं करना है। मेरे पास यह काम है। बहिष्कार तब आता है जब मैं कक्षा नाम के माध्यम से क्लासनाम बाइंडिंग के माध्यम से एक सीएसएस वर्ग जोड़ने का प्रयास करता हूं।

मुझे यकीन है कि यह तब हो रहा है जब मैं गणना की कुल गणना की गई संपत्ति के दौरान Ember.set कर रहा हूं।

मेरा प्रश्न यह है कि जब मैं फॉर्म में स्कोर बदलता हूं तो मैं सीएसएस के साथ अपडेट किए गए कुल स्कोर को और भी अपडेट कर सकता हूं?

कोड विवरण: मैं दो घटक है, स्कोर पंक्ति और न्यायाधीश पंक्ति। स्कोर-पंक्ति स्कोर ऑब्जेक्ट्स की एक सरणी में ले जाती है, प्रत्येक स्कोर के माध्यम से जज-स्कोर घटक को बुलाती है।

Ember  : 2.2.0 
Ember Data : 2.2.1 

अद्यतन यहाँ एक काम कर एंबर ज़ुल्फ़ समस्या का प्रदर्शन किया जाता है:

https://ember-twiddle.com/6696d907b604aa750201?numColumns=1

index.js - (मज़ाक उड़ाया कोड इस प्रश्न के लिए बाहर निकाला)

let scores = new Ember A(); 
scores.pushObject(Ember.Object.create({ points: 1 })); 
scores.pushObject(Ember.Object.create({ points: 2 })); 
scores.pushObject(Ember.Object.create({ points: 3 })); 

index.hbs

{{score-row scores=scores}} 

स्कोर-row.hbs

{{#each scores as |score|}} 
    {{judge-score score=score}} 
{{/each}} 

{{calculatedTotal}} 

स्कोर-row.js:

calculatedTotal: Ember.computed('[email protected]',() => { 
    let totalScore = 0, 
     scores = this.get('scores'); 

    if(Ember.isPresent(scores)) { 
     var i, 
      scoresLength = scores.length, 
      sortedAscending, 
      numLowToDrop = 1; 

     sortedAscending = this.get('sortedScores'); 

     for(i = 0; i < scoresLength; i++) { 
      currentScoreObj = sortedAscending.objectAt(i); 

      // I think this is what is causing the ember-views.render-double-modify 
      Ember.set(currentScoreObj, '_droppedLow', (i < numLowToDrop)); 
     } 

     sortedAscending.forEach((score) => { 
      if(!score.get('_droppedLow')) { 
       totalScore += +score.get('points'); 
      } 
     }); 
    } 
    return totalScore; 
}), 

// had to write my own sort because scores.sortBy('points') was sorting as if 
// points were a string and not a number ? 
sortedScores: Ember.computed.sort('[email protected]', (score1, score2) => { 
    if (+score1.get('points') > +score2.get('points')) { 
     return 1; 
    } else if (+score1.get('points') < +score2.get('points')) { 
     return -1; 
    } 
    return 0; 
}) 

न्यायाधीश score.hbs

{{input value=score.points}} 

न्यायाधीश score.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    classNameBindings: [ 
     "score._droppedLow:droppedLow" 
    ] 
}); 

धन्यवाद!

+0

आप कभी भी इस हल कर पाने था:

इस प्रयास करें? मैं इसे बिल्कुल उसी तरह की परिस्थिति में देख रहा हूं। –

+1

हां क्रिस, यदि आप एम्बर्टवाइल्ड पेज को देखते हैं, तो अब इसे बहिष्करण चेतावनी नहीं है।असल में, मैंने स्कोर प्रदर्शित करने के लिए एक अलग गणना की गई संपत्ति का उपयोग किया। – DanMonroe

उत्तर

0

मुझे आश्चर्य है कि शायद हर बार pushObject कहा जाता है कि यह आपकी गणना की गई संपत्ति को फिर से ट्रिगर करता है?

let scores = new Ember A([ 
    Ember.Object.create({ points: 1 }), 
    Ember.Object.create({ points: 1 }) 
]); 
+0

धन्यवाद पेड्रो। मैंने आपके सुझाव के साथ एक एम्बर ट्विडल जोड़ा लेकिन यह अभी भी बहिष्करण चेतावनी है। – DanMonroe

संबंधित मुद्दे