Ember.Handlebars.SafeString is not a function的解决方案

虽然Ember快凉了(此句划掉),但是遇到问题还是要解决的。

按照书上的写法复制了一遍,但是运行的时候控制台报错“Ember.Handlebars.SafeString is not a function”。查阅文档和Github上的issue可以看到:

Suggest using Ember.String.htmlSafe over Ember.Handlebars.SafeString:

// deprecated
new Ember.Handlebars.SafeString(someString);

// Non-deprecated
Ember.String.htmlSafe(someString);

For a few reasons:

  • The SafeString API is a tad bit “trolly” (many questions arise from it “not working” due to forgetting to use new).
  • The Ember.Handlebars namespace is basically legacy and going away

也就是说,这个方法已经废弃了;按照上文所述,换成Ember.String.htmlSafe即可解决:

import Ember from 'ember';

return Ember.String.htmlSafe(
    `<span class="text-primary">${formatted}</span>`
  );

此外,还有一种写法,看起来更新一点(其实就是2.x和3.x的语法区别):

import {htmlSafe} from '@ember/template';

return htmlSafe(
    `<span class="text-primary">${formatted}</span>`
  );

至于原因?稍微考证一下,这是2016年5月27日发布的消息。我们都知道,废弃离移除肯定还有一段时间,而这本书出版于2016年7月,写作时间只会更早,所以当时还有这种遗留代码也很正常。而软件也不可能无限制地向下兼容,这样会导致过于冗余,所以抛弃一部分废弃的API就很正常了。只是苦了我们这些刚起步的人啊……

具体的还可以参考Ember的官方API

参考资料
  1. Deprecate Ember.Handlebars.SafeString
  2. SafeString moved from Ember.Handlebars.SafeString to Ember.String.htmlSafe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值