javascript - Ember 2.0 中的 makeBoundHelper 替代方案

标签 javascript ember.js handlebars.js ember-cli

到目前为止,我一直在使用绑定(bind)助手在我的博客文章中注入(inject) Google DFP 广告。由于在 Ember 2.0 中删除了所有 Handlebars API,从 Ember 2.0 开始我可以使用什么来代替?

import Ember from "ember";

export default Ember.Handlebars.makeBoundHelper(function(value, options) {

  var parsedHtml = Ember.$('<div />').html(value)

    // Push the ads after the divs have been rendered
    Ember.run.schedule('afterRender', function() {
      googletag.cmd.push(function() { googletag.display('div-gpt-ad-111111111-0'); });
    }) 
  }

  return parsedHtml.html()
});

最佳答案

您将使用 Ember.Helper.helper语法:

import Ember from 'ember';

const { Helper: { helper }, run: { schedule }, $ } = Ember;

export function helperName(params, hash) {
  let parsedHtml = $('<div />').html(params[0])

    // Push the ads after the divs have been rendered
   schedule('afterRender', function() {
      googletag.cmd.push(function() { googletag.display('div-gpt-ad-111111111-0'); });
    }) 
  }

  return parsedHtml.html();
}

export default helper(helperName);

Params 是您在模板中传递给助手的所有值的数组,例如 {{my-helper val1 val2 val3}} params[0]val1 等等,散列是一个对象,包含您在助手 {{my-helper val1 val2 property1=myPropValue}} 上设置的所有属性,您将访问它通过 hash.property1

关于javascript - Ember 2.0 中的 makeBoundHelper 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988475/

相关文章:

javascript - 保留不同 html 页面之间按钮完成的颜色变化

javascript - Angular Directive(指令)无法识别属性

ember.js - 使用 ember.js 无限滚动(延迟加载)

mysql - 如何使用 Handlebars 在 html 中显示图像来自 MYSQL 作为 blob

handlebars.js - TypeError : templateSpec. 调用不是函数

javascript - 用链接切换文本

JavaScript 错误 [对象 HTMLParagraphElement]

Ember.js 项目目录结构

javascript - Ember.Js 标题重复

templates - Handlebars If-Else If-Else 与字符串相等函数