【问题标题】:Ember.js helper with moment.js (using ember-cli) : Handlebars error: Could not find property带有 moment.js 的 Ember.js 助手(使用 ember-cli):把手错误:找不到属性
【发布时间】:2014-07-17 03:17:21
【问题描述】:

我正在尝试在我的 ember.js 应用程序(使用 ember-cli 构建)中使用 moment.js,我遇到了这个错误

Handlebars error: Could not find property 'formatDate' on object

我认为这与此错误 How to use Custom helpers in ember-app-kit? 相同,但我已经采用了相同的方法,但还没有工作。有人有同样的错误吗?请帮我弄清楚。

我把 app.import('vendor/momentjs/moment.js');Brocfile.js"moment": true in .jshintrc 与 ember-cli 文档中一样, 我在PostsTemplate中使用了助手{{formatDate date}}

我创建了一个助手app/helpers/formatDate.js

var formatDate = Ember.Handlebars.makeBoundHelper(function(date) {
  return moment(date).fromNow();
});

export default formatDate;

我也在app/helpers/formatDate.js 中尝试过这种语法,但都不起作用并且都得到相同的错误

export default Ember.Handlebars.registerBoundHelper('formatDate',function(date) {
  return moment(date).fromNow();
});

【问题讨论】:

  • 好吧,肯定是找不到帮手,是不是 broccoli 不包括在构建中?
  • @kingpin2k 当我在 package.json "broccoli-ember-hbs-template-compiler": "^1.5.0", 安装 ember-cli 时,它已经包含在其中了吗?

标签: ember.js momentjs


【解决方案1】:

我认为您的文件名“formatDate.js”的格式有误。尝试“format-date.js”,它应该可以工作。

摘自http://iamstef.net/ember-cli/

Handlebars 助手只有在其名称包含破折号(反向词、翻译文本等)时才会被解析器自动找到。这是在 Ember 中做出选择的结果,以帮助消除助手与属性的歧义,并减轻助手解析对所有绑定的性能影响。

像这样使用新的“格式日期”助手:

{{format-date "29/05/2014"}}

【讨论】:

  • 谢谢!这是我粗心的错误,但很高兴它现在有效!
  • 不用担心。我很高兴能帮上忙。
  • 我得到'时刻未定义错误'。有什么解决办法吗?
  • @kushdilip 你是否在 Brocfile.js 和 bower.js 中包含了“moment.js”库?
  • 是的,它在ember build 之后工作。你能看看这个问题how to deploy ember-cli to gh-pages
【解决方案2】:

我也遇到了这种症状并有不同的解决方案。

我在 app/helpers/fh.js 中有一个名为“fh”的助手,为了能够使用它,我需要将它添加到控制器中,如下所示

import fh from '../helpers/fh';

如果我没有导入行,我会收到以下错误:

“Handlebars 错误:在对象上找不到属性 'fh'”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2016-08-13
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多