Ember.js帮助程序无法正确识别参数
我正试图习惯Ember.js和Handlebar,但有一个问题让我感到困惑。我可能只是错过了一些东西,但已经做了很长一段时间,没有发现任何错误 我有以下简单的模板:Ember.js帮助程序无法正确识别参数,ember.js,handlebars.js,Ember.js,Handlebars.js,我正试图习惯Ember.js和Handlebar,但有一个问题让我感到困惑。我可能只是错过了一些东西,但已经做了很长一段时间,没有发现任何错误 我有以下简单的模板: <header> <h2><a href="#" class="link-box-title">{{project.pid}}-{{projectWindowTitle project}}</a></h2> </header> 我过度简化了help
<header>
<h2><a href="#" class="link-box-title">{{project.pid}}-{{projectWindowTitle project}}</a></h2>
</header>
我过度简化了helper,但结果总是一样的,helper不会返回任何内容:
<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>
我做错了什么?在ember.js中使用Handlebar时,助手签名与“普通”Handlebar略有不同。主要区别在于,在调用帮助程序之前,未“解析”参数 例如,proj是“project”,因此您必须从视图中获取“project”的值:
Handlebars.registerHelper('projectWindowTitle', function(property, options) {
var project = Ember.getPath(this, property);
var info = project.get("pid");
return info;
});
我知道那个问题已经被接受了,但是。。这不是正确的方法:) 如上所述,为ember创建车把辅助对象的正确方法与在车把中所做的有点不同 大致如下:
Ember.Handlebars.helper('projectWindowTitle', function(value) {
var escaped = Handlebars.Utils.escapeExpression(value.pid);
return new Handlebars.SafeString(escaped);
});
Michael说得对,因为参数是作为名称传递的,所以需要从帮助器中解析
项目
对象。我认为,一旦您将项目分配更改为var project=Ember.get(这是属性),这将起作用代码>。
Ember.Handlebars.helper('projectWindowTitle', function(value) {
var escaped = Handlebars.Utils.escapeExpression(value.pid);
return new Handlebars.SafeString(escaped);
});