ember.js handlebars.js

ember.js - ¿Puede un Ember.Component tener una forma de bloque y no de bloque?



handlebars.js (4)

"plantilla" ha quedado en desuso en favor de parcial, por ejemplo.

{{#if partial}} {{yield}} {{else}} <p>Default content for inline (non-block) form of the component.</p> {{/if}}

Me gustaría construir un Ember.Component que se pueda usar en forma de bloque o sin un bloque cuando se desee un comportamiento predeterminado.

Por ejemplo, en forma de bloque:

{{#my-helper}} ... {{/my-helper}}

O forma no bloqueada:

{{my-helper}}

Donde la plantilla de ayudante es de alguna manera capaz de detectar que no hay un bloque y comportarse en consecuencia. Por ejemplo, sería bueno si hubiera alguna manera de detectar el bloque:

{{#if hasBlock}} {{yield}} {{else}} default output {{/if}}

Para mis requerimientos, necesito tener alguna forma de generar algo solo si no hay un bloque.

¿Alguna idea de como hacer esto?

actualizar:

Si está confundido por qué mi pregunta es la misma que la aceptada, es porque Ember adoptó una nueva sintaxis que es exactamente lo que originalmente imaginé como deseable. Cuando le pregunté por primera vez, resultó que había una forma indocumentada de hacerlo con {{#if template}} pero desde entonces ha quedado en desuso con Ember 2.x y hay una nueva sintaxis {{#if hasBlock}} que le sucede a coinciden con cómo formulé mi pregunta.


Acceder a la template directamente está actualmente en desuso, pero hay una propiedad hasBlock marcada con una función (que básicamente hace !!template bajo el capó) que debería usarse en este caso.

El indicador de función es ember-views-component-block-info

Aquí hay un enlace a la solicitud de extracción combinada: https://github.com/emberjs/ember.js/pull/10461


Dentro del Component querrás verificar el valor de hasBlock

{{#if hasBlock}} {{yield}} {{else}} <p>Default content for inline (non-block) form of the component.</p> {{/if}}

Aquí hay un JSBin: http://jsbin.com/IWEKere/1/edit


El enlace a los documentos está aquí: http://emberjs.com/api/classes/Ember.Component.html#property_template

Los documentos no dicen explícitamente que el atributo de la plantilla se usa de esta manera. Como la clase Ember.Component hereda de la clase Ember.View , se puede inferir que la plantilla del componente actúa como la plantilla de diseño de Ember.View .