【问题标题】:Getting an Ember controller's function property from inside an Ember Handlebars template从 Ember Handlebars 模板中获取 Ember 控制器的功能属性
【发布时间】:2013-05-19 00:23:30
【问题描述】:

在 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 控制器属性?

【问题讨论】:

标签: ember.js handlebars.js


【解决方案1】:

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

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

工作fiddle

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2014-05-26
    相关资源
    最近更新 更多