2013-05-19 1 views
5

内部からエンバーコントローラの機能性を取得する、はエンバーハンドルテンプレートにエンバーハンドルテンプレート

  • {{someProperty}}
  • を使用して、コントローラの(文字列/ブール値/数ベース)プロパティにアクセスすることが可能です<someHtmlTag {{bindAttr someHtmlTagAttribute="someProperty" />

構成体。

これは、関数ベースのコントローラプロパティでは機能しないようです。

次作品

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

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

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

動作しない、次の

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

私はハンドルバーのテンプレートの中から機能ベースのエンバーコントローラのプロパティにアクセスするにはどうすればよい:{{bindAttr ...}}を使用して210


は問題に少し洞察力を与えますか?

+2

を役に立てば幸い計算されたプロパティ、@intuitivepixelの下の答えは、より高度な使用法のチェックのための基本的なCPの作成方法を説明しています。http://emberjs.com/guides/object-model/computed-properties/ –

+0

これはブラウザの仕様Cの問題。 https://stackoverflow.com/questions/18605866/what-does-property-do-in-function-property – yagnasri

答えて

13

あなただけのプロパティがアクセスされたときに実行する機能が必要な場合は、あなたが何かを行うことができます:fiddle

作業

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

は、それはあなたが探している