2015-08-13 112 views
5

迄今爲止,我一直在使用綁定幫助器在我的博客帖子中注入Google DFP廣告。由於Ember 2.0中已刪除所有Handlebars API 作爲Ember 2.0,我可以使用什麼呢?Ember 2.0中的makeBoundHelper替代方案

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() 
}); 

回答

7

您將使用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訪問它。

+0

這工程很好,也感謝您的描述 – Hedge

+0

我的快樂^^。 –

+0

還有一個問題。爲什麼使用常量:'const {Helper:{helper},run:{schedule},$} = Ember;'? – Hedge