angular $translate.instant returns 对象而不是字符串
angular $translate.instant returns object instead of string
我正在使用 "angular-translate": "^2.15.1"
和 $translateProvider.useSanitizeValueStrategy('sce')
在我的控制器中,我需要将翻译后的字符串值传递给 $http 服务。
但是下面的代码返回的是 TrustedValueHolderType
对象而不是字符串。
defaultMessage = translate.instant('welcome-message.default.message');
最低限度的 plunkr https://plnkr.co/edit/ZPtixjNub9kIExiuGIkp?p=preview
打开控制台(全部清除)。然后单击 DE 或 EN 按钮并查看日志
是的,如评论中所述,decodeURIComponent
可能会解决它。但首先是造成这种情况的原因是:
$translateProvider.useSanitizeValueStrategy('sce')
这会在全局范围内对 $translate
的输出进行编码。这就是为什么您可以使用 decodeURIComponent
.
来计算它的原因
也许您可以使用不同的策略。 angular-translate
guide 似乎为此提出了 escape
策略。
这里有一个 forked plunker 可以使用 escape
策略,不需要使用 decodeURIComponent
我正在使用 "angular-translate": "^2.15.1"
和 $translateProvider.useSanitizeValueStrategy('sce')
在我的控制器中,我需要将翻译后的字符串值传递给 $http 服务。
但是下面的代码返回的是 TrustedValueHolderType
对象而不是字符串。
defaultMessage = translate.instant('welcome-message.default.message');
最低限度的 plunkr https://plnkr.co/edit/ZPtixjNub9kIExiuGIkp?p=preview 打开控制台(全部清除)。然后单击 DE 或 EN 按钮并查看日志
是的,如评论中所述,decodeURIComponent
可能会解决它。但首先是造成这种情况的原因是:
$translateProvider.useSanitizeValueStrategy('sce')
这会在全局范围内对 $translate
的输出进行编码。这就是为什么您可以使用 decodeURIComponent
.
也许您可以使用不同的策略。 angular-translate
guide 似乎为此提出了 escape
策略。
这里有一个 forked plunker 可以使用 escape
策略,不需要使用 decodeURIComponent