Ember.js帮助器无法正确识别参数

时间:2012-02-13 14:12:00

标签: ember.js handlebars.js

我正在尝试习惯Ember.js和Handlebars,但有一个问题令我感到困惑。我可能只是错过了一些东西,但已经使用了很长一段时间并且找不到任何错误。

我有简单的模板:

<header>

    <h2><a href="#" class="link-box-title">{{project.pid}}-{{projectWindowTitle project}}</a></h2>

</header>

第一个{{project.pid}}正确输出project.pid值,我想将项目对象传递给helper函数:

Handlebars.registerHelper('projectWindowTitle', function(proj) {

    var info = proj.pid;
    return info;

});

我过分简化了助手,但结果总是一样,帮助者不会返回任何东西:

<a href="#" class="link-box-title"><script id="metamorph-9-start" type="text/x-placeholder"></script>S2S<script id="metamorph-9-end" type="text/x-placeholder"></script>-</a>

我做错了什么?

2 个答案:

答案 0 :(得分:5)

在ember.js中使用把手时,助手签名与“普通”把手略有不同。主要区别在于,在调用帮助程序之前,参数不会被“解析”。

对于您的示例, proj 是“project”,因此您必须从视图中获取“project”的值:

Handlebars.registerHelper('projectWindowTitle', function(property, options) {
    var project = Ember.getPath(this, property);
    var info = project.get("pid");
    return info;
});

答案 1 :(得分:1)

我知道这个问题已经接受了答案但是......这不是正确的做法:)

正如ember docs所述,为斗篷制作把手助手的正确方法与你在把手中的做法略有不同。

有些事情:

Ember.Handlebars.helper('projectWindowTitle', function(value) {
  var escaped = Handlebars.Utils.escapeExpression(value.pid);
  return new Handlebars.SafeString(escaped);
});