2016-05-04 13 views
1

Ich arbeite an einer Anwendung, wo ich eine Eigenschaft übergeben, die in Controller beobachtet wird, um die Komponente, aber ich bekomme undefined Wert. Ich bin ember mit 1,6Wie übergeben Controller beobachtete Eigenschaft in Komponente

Wie ich Komponente nennen: -

{{range-slider min="0" max="100" step="1" value=currentVal}} 

Komponente Implementierung ist: -

App.RangeSliderComponent = Ember.Component.extend({ 
tagName:'', 
currentValue:function(){ 
    return this.get('value'); 
}.property('value'), 

minValue:function(){ 
    return this.get('min'); 
}.property('min'), 

didInsertElement:function(){ 
    console.log("component with currentValue="+this.get("currentValue")+" minValue="+this.get('minValue')); 

} 

})

currentVal als Komponente Wert ist eine Eigenschaft, die beobachtet wird im Controller. Wenn ich den Schieberegler verschiebe, wird der aktuelle Wert geändert, da er mit der Komponente verbunden ist. Der Standardwert ist 50. Der Controller funktioniert einwandfrei.

Der Controller Teil ist: -

currentVal:50, 

currentValChanged:function(){ 
    console.log("currentVal changed"); 
}.observes('currentVal'), 

In Komponente, erhalte ich den min Wert richtig, aber nicht immer den Wert. Es kommt undefiniert.

So erhalten Sie die Eigenschaft Wert in Komponente?

aktualisiert

Ich bin in der Lage Variable zu erhalten, indem Methoden in der Komponente folgenden: -
1) Wenn ich eine Variable direkt an Komponente mit statischem Wert übergebe, es funktioniert. z. B. max Wert in Bereich-Slider-Komponente übergeben.
2) Wenn ich eine statische Variable überlasse, die im Controller definiert ist, z. Controller in

dummyValue:2345, 

Wenn I Blindwert Komponente zu übergeben, kann ich es in Komponententeil lesen.

Aber wenn die Eigenschaft Eigenschaft berechnet wird dann funktioniert es nicht.

+0

Also ist 'currentValue' etwas anderes als ein Alias, den Sie einfacher mit' currentValue: Ember.computed.alias ('value') 'definieren können? Ob Ihr Controller eine Eigenschaft beobachtet oder nicht, sollte nichts mit irgendetwas zu tun haben. –

+0

es funktioniert nicht einmal mit computed.alias() –

+0

Nur eine Vermutung, aber es könnte ein Problem mit dem Eigenschaftsnamen "Wert" sein, versuchen Sie, es in "val" zu ändern. –

Antwort

1

Ich bezweifle, dass Ihr Controller undefined Wert auf currentVal Eigenschaft im Controller Teil setzt. Bitte schauen Sie sich die twiddle an, die funktioniert ..

+0

Danke. Das hat wirklich geholfen. –

0

Wenn Sie value=currentVal tun, müssen Sie darauf zugreifen this.get("value"). Wenn Sie mit this.get("currentValue") darauf zugreifen möchten, müssen Sie es mit dem folgenden Namen übergeben: currentValue= currentVal.

+0

this.get ("Wert") funktioniert nicht. Und currentValue ist die berechnete Eigenschaft in der Komponente. this.get ("value") sollte in der Eigenschaft currentValue funktionieren, aber es funktioniert nicht. –

+0

können Sie einen nicht funktionierenden Glut-Twiddle bereitstellen? es sollte funktionieren. – Lux

0

Ich hoffe, nicht sehr dumm klingen, aber, haben Sie versucht, einen Platz zwischen currentVal und }}? Es ernsthaft arbeitete für mich mit einigen Helfern.

So:

{{range-slider min="0" max="100" step="1" value=currentVal }} 

Wirklich, ich brauchen, das zu tun mit glut-xselect oder es funktioniert nicht richtig.

+0

Dies scheint sehr unwahrscheinlich. –

+0

@torazaburo Ja, ich weiß, und wenn ich in Ihrer Position wäre würde wahrscheinlich denken, dass das dumm ist, aber es ist wirklich mit Ember-Xselect erforderlich, so dass ich ein generalisiertes Problem mit Lenker beim Schreiben von Variablennamen oder Zuordnung Ausdrücke neben dem Schließen sein könnte '}}'. – Terseus

+0

Ich arbeitete nicht in meinem Fall –