2013-05-19 13 views
5

In un modello di Ember manubrio, è possibile accedere (booleano/numero di stringhe basata/a) Proprietà di un controller utilizzando ilOttenere proprietà di funzione di un controller Ember dall'interno di un modello di Ember Manubrio

  • {{someProperty}}
  • <someHtmlTag {{bindAttr someHtmlTagAttribute="someProperty" />

costrutti.

Questo non sembra funzionare per le proprietà del controller basato su funzione.

Esempio

Le seguenti opere

//Handlebars 
<script type="text/x-handlebars" id="index"> 
    Some property: {{someProperty}}<br/> 
</script> 

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: "yolo", 
}); 

La seguente non funziona

//Handlebars 
<script type="text/x-handlebars" id="index"> 
    Some property: {{someProperty}}<br/> 
</script> 

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: function() { 
     return "yolo"; }, 
}); 

Here is a jsFiddle


Utilizzando la {{bindAttr ...}} dà un po 'di comprensione del problema:

Uncaught Error: assertion failed: Attributes must be numbers, strings or booleans, not function() ...{ 

Come posso accedere alle proprietà del controller Ember basati su funzioni all'interno di un modello di manubrio?

+2

Siete alla ricerca di Proprietà calcolate, la risposta di @intuitivepixel qui sotto spiega come creare un CP di base, per un controllo più avanzato sull'uso http://emberjs.com/guides/object-model/computed-properties/ –

+0

Questo potrebbe essere un browser specifi c problema. https://stackoverflow.com/questions/18605866/what-does-property-do-in-function-property – yagnasri

risposta

13

Se avete solo bisogno di una funzione da eseguire quando la proprietà si accede, allora si potrebbe fare qualcosa di simile:

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: function() { 
     // do your stuff... 
     return "yolo"; 
    }.property() 
}); 

Lavorare fiddle

Speranza che aiuta

Problemi correlati