2013-01-21 9 views
9

मैं प्रगति पट्टी की तरह कुछ करना चाहता हूं, जिसे एम्बर द्वारा नियंत्रित किया जाएगा। तो मेरी आँखों में, वहाँ ढाई तरीके इस लक्ष्य को हासिल करने के लिए कर रहे हैं:नियंत्रक की पहुंच संपत्ति को देखने के भीतर

  1. नियंत्रक, जो सेट में एक पर्यवेक्षक है तत्वों 'width जब शुरू हो गया। समस्या: AFAIK, कोई नियंत्रक के भीतर से DOM-तत्वों तक नहीं पहुंच सकता है, यानी this.$('#progress') दृश्य में आप इसे करने के तरीके की तरह।

  2. में एक पर्यवेक्षक है देखें, जो नियंत्रक की संपत्ति को देखता है। समस्या: मुझे नहीं पता, नियंत्रक की संपत्ति का निरीक्षण कैसे करें (और पहुंच)।

  3. (एक फ्रीकी data-progress="42" विशेषता को {{bindAttr}} के माध्यम से नियंत्रक की संपत्ति के लिए बाध्य और तत्वों width समायोजित जब भी विशेषता के मूल्य बदल गया है)

उत्तर

13

विकल्प 2 आपका सर्वश्रेष्ठ दांव है।

समस्या: मुझे नहीं पता, नियंत्रक की संपत्ति का निरीक्षण (और पहुंच) कैसे करें।

एम्बर दृश्य के निर्माण के दौरान दृश्य की नियंत्रक संपत्ति सेट करेगा, तो आप नियंत्रक की संपत्ति तक पहुंचने के लिए इसका उपयोग कर सकते हैं।

App = Ember.Application.create(); 

App.ApplicationController = Ember.Controller.extend({ 
    percentComplete: '0' 
}); 

App.ProgressView = Ember.View.extend({ 
    percentChanged: function() { 
    percentString = (this.get('controller.percentComplete') + "%"); 
    this.$('.bar').css('width', percentString); 
    }.observes('controller.percentComplete').on('didInsertElement') 
}); 

मैं यहाँ एक काम उदाहरण पोस्ट किया है: http://jsbin.com/hitacomu/1/edit

+6

एक नियंत्रक एक दृश्य है ?? – iConnor

+0

मैं दूसरा @ कॉनर की टिप्पणी। मैं इस बात से बहुत उलझन में हूं कि कैसे एम्बर अपने जादू को जोड़ने के लिए वस्तुओं के प्रकार, मोरियो के बारे में अधिक देखभाल करता है। इसके अलावा, जेएसबीएन लिंक इस समय कुछ भी नहीं कर रहा है। –

+1

@PatrickM क्षमा करें कि एक टाइपो था, 'App.ProgressController = Ember.Controller.extend' होना चाहिए था। इसके अलावा jsfiddle तोड़ दिया क्योंकि यह जेएस पुस्तकालयों को संदर्भित किया गया है जो स्थानांतरित हो गया है। मैंने दोनों पहेली और मेरे जवाब को अपडेट किया है, आशा है कि नया संस्करण अधिक उपयोगी होगा। –

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