link hbs handlebars example ember else javascript ember.js handlebars.js handlebarshelper htmlbars

javascript - handlebars - npm hbs



Cómo escribir ayudantes en HTMLBars? (4)

Después de la última versión de EmberJS v1.9.0 estoy intentando pasar de las barras de control a las barras de HTML. Lo que me resulta muy desafiante es la falta de documentación.

Estoy tratando de implementar ayudantes muy simples.

Por ejemplo, tome estos auxiliares de manubrio:

HTML

<div id="main"></div> <script type="text/x-handlebars" data-template-name="index"> {{logIt test}} <h1>{{test}}</h1> </script>

JS

App = Ember.Application.create({ rootElement: ''#main'' }); App.IndexRoute = Ember.Route.extend({ setupController: function(controller){ controller.set(''test'', ''mytest''); } }); Ember.Handlebars.registerHelper("logIt", function(something) { console.log(something); });

Js Fiddle: http://jsfiddle.net/sisir/p463q2L8/

¿Cómo lo convierto a htmlbars?


Creo que puedes usar Ember.Handlebars.helper, que es lo que está en las últimas guías de emberjs . Este jsbin usa htmlbars y funciona. Este es el ayudante en el jsbin

AppLogItHelper = Ember.Handlebars.helper("logIt", function(something){ console.log(something); });

Si está utilizando ember-cli , generará automáticamente uno para usted, pero eso usa Ember.Handlebars.makeBoundHelper que no funciona en el jsbin pero funciona en mi aplicación ember-cli.


A partir de Ember 1.13, hay dos API: http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_new-ember-js-helper-api

La sintaxis más simple y común es ahora esta:

export default Ember.Helper.helper(function(params, hash) { return params.join('' ''); });

Los ayudantes reciben dos argumentos: los params son los parámetros pedidos pasados ​​a un ayudante, y el hash contiene las opciones de valor-clave, por ejemplo title = "Mr.".


¡Una novedad muy importante es que HTMLBars tiene subexpresión ! Como Ember 1.10+ se cambió a HTMLBars, debería usar Ember.HTMLBars.makeBoundHelper en Ember.Handlebars.registerHelper lugar Ember.Handlebars.registerHelper . Pero aún puede usar Ember.Handlebars.registerHelper de la versión 1.10.1 de Ember

Nuevo enfoque:

App.XEqHelper = Ember.HTMLBars.makeBoundHelper(function(params, hash, options, env) { return params[0] === params[1]; });

llama desde plantillas como:

{{#if (x-eq order ''delivery_order'')}} Need a delivery {{/if}}


A partir de Ember 1.10.0, esta pregunta se resuelve haciendo Ember.HTMLBars.makeBoundHelper(theHelperFunction) .

Editar: desde Ember 1.13.6 (31 de julio de 2015), usar esto se marca como obsoleto.

DEPRECATION: El uso de Ember.HTMLBars._registerHelper está en desuso. Los ayudantes (incluso los descuidados) se resuelven automáticamente. [id deprecation: ember-htmlbars.register-helper]