2015-08-13 22 views
5

Ho iniettato annunci DFP di Google nei post del mio blog utilizzando un helper associato finora. Dal momento che tutte le API Handlebars sono state rimosse in Ember 2.0 , cosa posso invece utilizzare a partire da Ember 2.0?alternativa makeBoundHelper in 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() 
}); 

risposta

7

Si potrebbe utilizzare la Ember.Helper.helper sintassi:

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 è un array di tutti i valori che vengono passati al aiutante nel modello come {{my-helper val1 val2 val3}}params[0] è val1 e così via, il l'hash è un oggetto che contiene tutte le proprietà impostate sull'helper {{my-helper val1 val2 property1=myPropValue}} e l'accesso avviene tramite hash.property1.

+0

Questo funziona benissimo e anche grazie per la descrizione – Hedge

+0

Il mio piacere ^^. –

+0

Un'altra domanda. Perché stai usando le costanti: 'const {Helper: {helper}, esegui: {schedule}, $} = Ember;'? – Hedge