2012-02-10 14 views
13

Ho un'app Ember.js molto semplice che funziona correttamente in IE e Chrome, ma non riesce in Firefox (9.0.1 e 10.0). Qualche ragione per cui? Ecco il codice:Perché questa app Ember.js ha esito negativo in 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

Qual è l'errore che stai riscontrando? – Veebs

risposta

13

L'errore in Firefox è

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

Ciò sembrerebbe indicare che lo script modello non è stato valutato nel punto in cui l'applicazione viene eseguita. La soluzione è aspettare il carico. Avvolgi il tuo appendTo in questo modo:

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

Si può anche mettere questa chiamata nel callback pronto dell'applicazione di Ember: 'App = Ember.Application.create ({ready: function() {App.view.appendTo ('# container');}});'. –

+0

Grazie. La pagina del documento ember.js non menziona la funzione ready. Nemmeno il kit di partenza-ember struttura l'applicazione in questo modo. C'è un altro posto dove dovrei cercare questo tipo di informazioni? – Naresh

+0

In generale, cosa dovrebbe andare nella funzione ready vs. outside? In effetti, tutte le creazioni/definizioni dell'oggetto Ember dovrebbero entrare nella funzione jQuery ready(), inclusa la creazione dell'applicazione Empper? – Naresh

1

Ho appena sperimentato lo stesso identico problema. Ho scoperto che è stato causato dal fatto che Ember è dipendente dal manubrio. Sembra che dopo la versione 1.0 abbiano rimosso l'inclusione del codice sorgente di Handlebars. Dopo aver aggiunto la libreria di Handlebars, l'errore scompare.

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

Tom Whatmore ha la risposta corretta a questo nei commenti.

L'errore viene visualizzato nella console javascript solo se si utilizza la versione di unminified ember.js

Il problema è che il modello non è stato valutato dalla brace perché sei il codice viene eseguito non appena il browser lo colpisce, piuttosto che dopo che l'applicazione ember è stata completamente creata.

Problemi correlati