script convertir coffee coffeescript ember.js

coffeescript - convertir - js to coff



Ember propiedades calculadas en Coffeescript (3)

Quiero implementar el siguiente código Javascript en Coffeescript

App.ItemView = Ember.View.extend({ classNameBindings: [''itemId''], itemId: function() { console.log(this.get(''content'')); return "item-%@".fmt(this.get(''content.id'')); }.property(''content.id''), templateName: ''item'' });

Esto es lo que tengo hasta ahora en coffeescript:

App.ItemView = Ember.View.extend( classNameBindings: [''itemId''] itemId: -> console.log this.get(''content'') contentId = this.get(''content.id'') "item-#{contentId}"); .property(''content.id'') templateName: ''item'' )

Yo obtengo:

Error: Parse error on line 11: Unexpected ''.''

El problema parece ser el punto en .property(''content.id'') . No sé cómo se traduce esto en Coffeescript. ¿Cómo puedo implementar correctamente esta vista en Coffeescript?


Está pasando bastante tiempo, pero creo que esto debería escribirse así:

App.ItemView = Ember.View.extend( classNameBindings: [''itemId''] itemId: (-> console.log this.get(''content'') contentId = this.get(''content.id'') "item-#{contentId}"); ).property(''content.id'') templateName: ''item'' )


itemId: (-> content = @get ''content'' if content return ''item-%@''.fmt(content.get ''id'') null ).property(''content.id'')

Debe proteger las propiedades calculadas de los valores que aún no se han definido. Es decir, su código está bien si ya hay una propiedad de identificación en el objeto de contenido. Si el contenido no está definido, entonces no podrá buscar su propiedad de ID y probablemente verá una queja.

También puedes usar

itemId: Ember.computed(-> .. ).property(''content.id'')

y un patrón similar para los observadores. De hecho, un observador también lograría lo mismo sin el condicional:

itemId: null contentIdChanged: (-> @set ''itemId'', ''item-%@''.fmt(@get ''content.id'') ).observes(''content.id'')


Me gusta usar Ember.computed .

itemId: Ember.computed ''firstName'', ''lastName'', -> "#{@get(''firstName'')} #{@get(''lastName'')}"