从Ember Handlebars模板中获取Ember控制器的函数属性

时间:2013-05-19 00:23:30

标签: ember.js handlebars.js

在Ember Handlebars模板中,可以使用

访问控制器(基于字符串/布尔/数字)属性
  • {{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 ()  ...{

如何从Handlebars模板中访问基于功能的Ember控制器属性?

1 个答案:

答案 0 :(得分:13)

如果您只需要在访问属性时执行某个函数,那么您可以执行以下操作:

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

工作fiddle

希望有所帮助