2013-05-19 45 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


使用{{bindAttr ...}}给人一点洞察问题:

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

如何访问基于函数的灰烬控制器属性从车把模板中?

+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

如果你只需要当访问属性被执行,那么你可以做类似的功能:

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

工作fiddle

希望它可以帮助