El uso de Ember.js y el Manillar, ¿cuál es la diferencia entre la unión de una plantilla para una vista de la clase vs instancia de la vista?

StackOverflow https://stackoverflow.com//questions/12663684

Pregunta

Caso I. Unión de la plantilla a instancia de la vista.

Por ejemplo, digamos que tengo una plantilla:

    <script type="text/x-handlebars" data-template-name="instance-template">
        <b> Name: </b> {{ name }}
    </script>

Puedo enlazar una instancia de la vista y anexar al documento ( por razones de simplicidad el param nombre es declarado en la vista, como se opuso a la unión a algunos capa de control) :

App.instanceView = Ember.View.create({
    templateName: 'instance-template',
    name: 'hello world'
}).append();

Qué es exactamente que está pasando detrás de las escenas aquí?Especificando el nombre de una plantilla, es este caso de ver alguna manera de tomar una plantilla y compilarlo con los parámetros pasados en el fondo?

Caso II.Enlace de la plantilla de vista de clase, la plantilla no se nombra.

Si, sin embargo, quiero enlazar una plantilla para una vista de la clase, tales como:

App.ViewClass = Ember.View.extend({
    name: 'hello world',
});

La documentación que se utiliza una plantilla de esta forma:

<script type="text/x-handlebars">
    {{ #view App.ClassView }}
        This part renders: {{ name }} 
    {{ /view }}
</script>

Por favor, tenga en cuenta, cuando hago esto, por alguna razón esto no funciona.La cita 'en Esta parte se hace:'en la plantilla, en realidad hace, sin embargo, el {{ nombre }} etiqueta no está representado.No tengo idea de por qué.

Caso III.la plantilla se unen a la vista de clases, de la plantilla de nombre.

Además, si I nombre de la plantilla de arriba:

<script type="text/x-handlebars" data-template-name = 'class-template'>
    {{ #view App.ClassView }}
        This part renders: {{ name }} 
    {{ /view }}
</script>

y cambiar la vista a

App.ViewClass = Ember.View.extend({
    templateName: 'class-template',
    name: 'hello world',
});

nada representa a todos.De nuevo no veo lo que está pasando aquí.

¿Fue útil?

Solución

Caso 1 Yah bastante.La vista es la representación (y estamos suponiendo que el contexto es el de la vista), entonces cuando vemos {{name}} este será el equivalente a instanceView.get('name').

Caso 2 Anónimo de las plantillas de no cambiar el contexto.Cuando se define una plantilla dentro de {{#view}} el contexto no cambia.Para obtener la vista del contexto en el que se utiliza con el {{#view}} ayudante en la que se tendrá que utilizar view.name.Por ejemplo:

App.ViewClass = Ember.View.extend({
    name: 'hello world',
});

<script type="text/x-handlebars">
    {{name}} <!-- lets pretend this is "something else" -->
    {{#view App.ClassView}}
        This part renders: {{name}} <!-- "something else" -->
        {{view.name}} <!-- "hello world" -->
    {{/view}}
</script>

Caso 3 Este ejemplo no tiene sentido y debería tener una aserción falla con Ember (no reducirá la versión).Se define una vista que utiliza una plantilla, entonces dentro de esa plantilla de representación de esa misma vista de nuevo con una plantilla anónima.Si esta es la intención de significado podría por favor proporcionar un caso de uso porque probablemente hay una manera mucho más sencilla de ir sobre lo que usted está tratando de lograr.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top