Qualcosa che trovo molto contro-intuitivo su Ember è che è possibile sovrascrivere una funzione di setter di proprietà calcolata (http://emberjs.com/#toc_computed-properties-setters) con gli argomenti su create()
. Vedo http://jsfiddle.net/zJQJw/2/Perché gli argomenti per create() non si comportano più come setProperties()?
ho trovato la migliore soluzione per questo è di chiamare create().setProperties(properties)
invece di create(properties)
, ma questo sembra un Gotcha inutile per me. Mi rendo conto che potrebbe interrompere alcune app a questo punto, ma penseresti che il comportamento create()
si comporti più come setProperties()
?
La mia motivazione per chiedere questo è che init()
verrà chiamato prima dello setProperties()
quando si utilizza il modello create().setProperties(properties)
. Questo non è stato ancora un grosso problema, ma posso vedere che questo è indesiderabile in alcune situazioni. Questo è un esempio completamente inventato, ma forse puoi vedere a cosa sto arrivando? http://jsfiddle.net/QJ8vX/2/
L'unica ragione che posso vedere per mantenere il comportamento corrente è eseguire sovrascrizioni specifiche dell'istanza dei metodi setter. Ma in questi casi lo si potrebbe facilmente fare MyClass.extend({ overridenMethod: ... }).create(properties)
Una modifica come questa può essere considerata per Ember 1.0? O ho solo un'idea sbagliata su come dovrebbe funzionare il modello di oggetti di Ember?
io feci salire questo numero esatto nel canale, per lo più accademico, e la risposta è stata (parafrasando) "Non vedo noi cambiare il comportamento di creare." Ti incoraggerei comunque ad aprire un problema di discussione su github. –
Ho archiviato https://github.com/emberjs/ember.js/issues/777, quindi sentitevi liberi di suonare lì. –
un paio di noi qui ha anche discusso con il team di ember anche su questo, e sostanzialmente hanno detto che non lo stanno cambiando. Sono d'accordo con te. –