2015-08-13 8 views
5

Wprowadziłem reklamy Google DFP do moich postów na blogu, używając dotychczas oprawionego pomocnika. Ponieważ wszystkie interfejsy API Handlebars zostały usunięte w Ember 2.0 , czego mogę używać zamiast Ember 2.0?alternatywa makeBoundHelper w 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() 
}); 

Odpowiedz

7

byłoby użyć składni 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 jest tablicą wszystkich wartości, które przechodzą do pomocnika w szablonie, takich jak {{my-helper val1 val2 val3}}params[0] jest val1 i tak dalej, hash jest obiektem zawierającym wszystkie właściwości ustawione na pomocniku {{my-helper val1 val2 property1=myPropValue}} i użytkownik uzyskuje do niego dostęp poprzez hash.property1.

+0

Działa to świetnie, a także dzięki za opis – Hedge

+0

Moja przyjemność ^^. –

+0

Jeszcze jedno pytanie. Dlaczego używasz stałych: 'const {Helper: {helper}, run: {schedule}, $} = Ember;'? – Hedge