javascript - 我怎样才能在 Ember 中输出一个字符串,同时它仍然被 handlebars 解释?

标签 javascript ember.js handlebars.js

这是一个简单的例子

MyApp.ApplicationController = Ember.Controller.extend({
  content: "some @user",
  parsedContent: function() {
    return this.get("content").replace("@user", "<a {{action gotoUser 'user'}}>user</a>");
  }.property("content")
});

输出

some @user
some <a {{action gotoUser 'user'}}>user</a>

而不是将内容解释为 Handlebars 模板。我想我需要手动编译这个,但我不确定如何传递正确的上下文。

Here's a JSFiddle

最佳答案

我有一个工作示例 here . 基本上,通过使 View 的模板成为计算属性,您可以在将模板传递到 Handlebars 解析器之前修改模板。

MyApp.LinkedUsersView = Ember.View.extend({
    template: function() {
        template = this.get("content").replace(/@(\w+)/g, '{{view MyApp.UserLinkView username="$1"}}');
        return Ember.Handlebars.compile(template);
    }.property()
});

MyApp.UserLinkView = Ember.View.extend({
    tagName: "span",
    user: function() {
        return MyApp.User.findByUsername(this.get('username'));
    }.property(),
    template: Ember.Handlebars.compile('<a {{action goToUser view.user href=true}}>@{{view.username}}</a>')
}); 

{{view MyApp.LinkedUsersView content="some @user with @another_user"}}

不过,我不确定每次编译 Handlebars 模板的性能。

关于javascript - 我怎样才能在 Ember 中输出一个字符串,同时它仍然被 handlebars 解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023783/

相关文章:

javascript - 如何从 vue el-date-picker 中 trim/删除时间?

javascript - haml/javascript/erb 转义

javascript - Ember 数据 : Sideloaded records creates duplicates in Store and weird behavior

javascript - 使用 Ember 动态添加和推送其他对象

javascript - Ember fastboot 适用于 http api 主机,但不适用于 https

handlebars.js - Uncaught TypeError : Handlebars. compile is not a function

javascript - ReactJS:setState 和回调后状态未更新

javascript - 获取适用于外部 JavaScript 文件 (.js) 的代码提示

javascript - 使用 Handlebars.js 减少代码

javascript - 如何覆盖 Mustache.js、Hogan.js 或 Handlebars.js 的默认输出插值?