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

Abd*_*ull 5 handlebars.js ember.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",
});
Run Code Online (Sandbox Code Playgroud)

以下不起作用

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

//Javascript
App.IndexController = Ember.ObjectController.extend({
    someProperty: function() {
        return "yolo"; },
});
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle


使用该方法可以{{bindAttr ...}}深入了解问题:

Uncaught Error: assertion failed: Attributes must be numbers, strings or booleans, not function ()  ...{
Run Code Online (Sandbox Code Playgroud)

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

int*_*xel 13

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

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

工作小提琴

希望能帮助到你