2013-05-19 11 views
5

w szablonie Ember kierownicy, możliwe jest dostęp (string/logiczna/liczba based) właściwość kontrolera jest za pomocąPierwsze własności funkcji kontrolera w Ember od wewnątrz szablonu Ember Kierownice

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

konstrukcje.

Wydaje się, że nie działa to w przypadku kontrolerów opartych na funkcjach.

Przykład

Następujące prace

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

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

Następujące nie działa

//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


Używanie {{bindAttr ...}} daje trochę wgląd w problem:

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

Jak mogę uzyskać dostęp do właściwości kontrolera Ember funkcyjne oparte od wewnątrz szablonu kierownicy?

+2

szukasz Computed Properties, @intuitivepixel 'odpowiedź poniżej wyjaśnia, jak utworzyć podstawowy CP, dla bardziej zaawansowanego sprawdzania użycia http://emberjs.com/guides/object-model/computed-properties/ –

+0

To może być specyfikacja przeglądarki c problem. https://stackoverflow.com/questions/18605866/what-does-property-do-in-function-property – yagnasri

Odpowiedz

13

Jeśli wystarczy funkcję do wykonania, gdy nieruchomość jest dostępna, a następnie można zrobić coś takiego:

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

Praca fiddle

Nadzieja pomaga

Powiązane problemy