2016-07-16 7 views
0

Ich habe einen Controller, die zu einer VorlageEmber oneway Bindung funktioniert nicht wie erwartet

activeProduction: Ember.computed('model.productions', function() { 
    // as default serve first Production 
    return this.get('model.productions').get('firstObject'); 
}), 

In diesem Produktion -Modell eine Default- Produktion eines Modells dient Ich habe eine Eigenschaft ‚Einstellungen‘ dass ich will vorübergehend geändert werden, ohne den tatsächlichen Wert im Speicher zu beeinflussen, so habe ich eine berechnete oneway Eigenschaft für diese Einstellungen:

productionSettingsComputed: Ember.computed.oneWay('activeProduction.settings'), 

Diese Einstellungen werden abgerufen und cha nged dies in einer Vorlage wie:

saved Settings:<br> 
{{activeProduction.settings.startMonday}}<br> 
computed oneWay Settings:<br> 
{{productionSettingsComputed.startMonday}}<br> 

{{form/check-box checked=productionSettingsComputed.startMonday label='Overview and month always start on a Monday'}} 

(das Formular/Checkbox ist nur eine benutzerdefinierte Komponente ein Standard-glut-form-Checkbox Einwickeln)

ich jetzt erwartet, dass, wenn ich den Wert ändern, in der Kontrollkästchen, dass sich nur der zweite Wert ({{productionSettingsComputed.startMonday}}) ändert. Aber auch der 'gespeicherte' Wert in {{activeProduction.settings.startMonday}} ändert sich.
So ist "OneWay" nicht wirklich nur OneWay.

Habe ich etwas falsch verstanden, oder habe ich irgendwo einen Fehler gemacht?

Ja, ich weiß, dass ich später mit verwerfen Änderungen eine Arbeit um tun könnte, aber das würde mir Kopfschmerzen über Benutzerrechte und andere Sachen ...

(Emberjs 2.5)

Antwort

0

Sie dereferenzieren productionSettingsComputed, so {{activeProduction.settings.startMonday}} und {{productionSettingsComputed.startMonday}} bewerten Sie die gleichen startMonday.

Sie müssten die startMonday Eigenschaft alias:

// model: 
startMondayComputed: Ember.computed.oneWay('activeProduction.settings.startMonday'), 

// template: 
saved Settings:<br> 
{{activeProduction.settings.startMonday}}<br> 
computed oneWay Settings:<br> 
{{startMondayComputed}}<br> 

{{form/check-box checked=startMondayComputed label='Overview and month always start on a Monday'}} 
+0

Ja, das funktioniert wie erwartet, danke. Es ist nicht so praktisch, wie ich es mir erhofft hatte, denn jetzt muss ich das für 20 verschiedene 'Einstellungen' fest codieren ... – Jeff

Verwandte Themen