5

在 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"; },
});

这是一个jsFiddle


使用 可以{{bindAttr ...}}对问题有一些了解:

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

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

4

1 回答 1

13

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

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

工作小提琴

希望能帮助到你

于 2013-05-19T00:59:50.463 回答