Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js帮助程序无法正确识别参数_Ember.js_Handlebars.js - Fatal编程技术网

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

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

我正试图习惯Ember.js和Handlebar,但有一个问题让我感到困惑。我可能只是错过了一些东西,但已经做了很长一段时间,没有发现任何错误

我有以下简单的模板:

<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);
});