2013-05-19 15 views
5

In einer Ember Lenker Vorlage bekommen, ist es möglich, einen Controller (string/boolean/Nummer basiert) Eigenschaft für den Zugriff durch deneines Ember Controllers Funktion Eigenschaft aus dem Inneren eines Ember Lenker Vorlage

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

Konstrukten.

Dies scheint bei funktionsbasierten Controller-Eigenschaften nicht zu funktionieren.

Beispiel

Die folgenden Werke

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

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

Die folgenden nicht

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

funktioniert 210

die {{bindAttr ...}} Verwendung gibt einen kleinen Einblick in das Problem:

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

Wie kann ich auf funktionsbasierte Ember Controller-Eigenschaften innerhalb einer Schablone Lenker?

+2

Sie suchen Berechnete Eigenschaften, @inuitivepixel 'Antwort unten erklärt, wie man einen Basis-CP erstellt, für eine erweiterte Nutzungsprüfung http://emberjs.com/guides/object-model/computed-properties/ –

+0

Dies könnte eine Browser-Spezifikation sein c Problem. https://stackoverflow.com/questions/18605866/what-does-property-do-in-function-property – yagnasri

Antwort

13

Wenn Sie nur eine Funktion ausgeführt wird, wenn das Objekt zugegriffen wird, dann könnte man so etwas wie:

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

Arbeiten fiddle

Hoffe, es hilft

Verwandte Themen