2012-02-10 12 views
13

Tengo una aplicación Ember.js muy simple que funciona correctamente en IE y Chrome, pero falla en Firefox (9.0.1 y 10.0). ¿Alguna razón por qué? Aquí está el código:¿Por qué falla esta aplicación Ember.js en Firefox?

<!doctype html> 

<html> 
<head> 
    <title>Template Name</title> 
</head> 
<body> 
    <script type="text/x-handlebars" data-template-name="my-template"> 
     {{App.user.name}} 
    </script> 

    <div id="container"></div> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript" src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.4.js"></script> 

    <script type="text/javascript"> 
     window.App = Ember.Application.create(); 

     App.user = Ember.Object.create({ 
      name: 'John' 
     }); 

     App.view = Ember.View.create({ 
      templateName: 'my-template' 
     }); 

     App.view.appendTo('#container'); 
    </script> 
</body> 
</html> 
+0

¿Cuál es el error que está experimentando? – Veebs

Respuesta

13

El error en Firefox es

uncaught exception: Error: <Ember.View:ember143> - Unable to find template "my-template". 

Esto parecería indicar que la secuencia de comandos de plantilla no ha sido evaluada en el punto donde se ejecuta la aplicación. La solución es esperar a la carga. Envuelva su appendTo de la siguiente manera:

$(function() { 
    App.view.appendTo('#container'); 
}); 
+7

También podría poner esa llamada en la devolución de llamada lista de la aplicación Ember: 'App = Ember.Application.create ({ready: function() {App.view.appendTo ('# container');}});'. –

+0

Gracias. La página del documento ember.js no menciona la función lista. Tampoco el ember-starter-kit estructura la aplicación de esta manera. ¿Hay otro lugar en el que debería buscar este tipo de información? – Naresh

+0

En general, ¿qué debería ir en la función lista frente a afuera? De hecho, ¿deberían todas las creaciones/definiciones de objetos Ember entrar dentro de la función jQuery ready(), incluida la creación de la aplicación Empper? – Naresh

1

Acabo de experimentar exactamente el mismo problema. Descubrí que se debió a que Ember dependía de manubrios. Parece que después de la versión 1.0 eliminaron la inclusión del código fuente de los manubrios. Después de agregar en la biblioteca de Handlebars, el error desaparece.

1
Ember.Application.create({ 
    ready: function() { 
     App.view.appendTo('#container'); 
    } 
}); 

Tom Whatmore tiene la respuesta correcta a esto en los comentarios.

El error se muestra en la consola de JavaScript sólo si se utiliza la versión de unminified ember.js

El problema es que la plantilla no ha sido evaluada por brasa porque estás código se ejecuta tan pronto como sea el navegador lo golpea, en lugar de después de que se haya creado completamente la aplicación.

Cuestiones relacionadas