Ember.js 为什么';t application.hbs在emberjs中呈现

Ember.js 为什么';t application.hbs在emberjs中呈现,ember.js,Ember.js,使用ember 1.0.0-pre3 我有一个小应用程序有以下代码: window.App = Ember.Application.create() App.ApplicationController = Ember.Controller.extend({}) App.Router.reopen location: 'history' App.Router.map -> @resource 'users', -> @route 'new' App.IndexR

使用ember 1.0.0-pre3

我有一个小应用程序有以下代码:

window.App = Ember.Application.create()

App.ApplicationController = Ember.Controller.extend({})

App.Router.reopen
  location: 'history'

App.Router.map ->
  @resource 'users', ->
    @route 'new'

App.IndexRoute = Ember.Route.extend
  renderTemplate: ->
    @render('index')
这是模板目录中的application.hbs:

<div class='navbar navbar-inverse navbar-fixed-top'>
  <div class='navbar-inner'>
    <div class='container'>
      <div class='nav-collapse collapse'>
        <ul class='nav'>
          <li>{{#linkTo 'index'}}Home{{/linkTo}}</li>
          <li>{{#linkTo 'users.index'}}Users{{/linkTo}}</li>
        </ul>
      </div>
    </div>
  </div>
</div>
<div class='container' id='main'>
  <div class='content'>
    <div class='row'>
      <div class='span12'>
        <div class='page-header'></div>
        {{outlet}}
      </div>
    </div>
  </div>
</div>


{{outlet}}

问题是它不会呈现此模板。在基本url加载应用程序时不会引发错误“http://127.0.0.1:3000/". 如果我尝试未定义的路由,它将抛出错误,因此我知道已加载Ember。

您的Ember代码似乎没有任何问题。我在jsbin上复制了一份,效果很好:

很确定这意味着你的模板没有被编译。当然,请尝试将以下内容添加到应用程序就绪挂钩中:

window.App = Ember.Application.create({
  ready: function() {
    console.log("Ember.TEMPLATES: ", Ember.TEMPLATES);
  }
});
Ember希望编译的把手模板在此数组中。如果在js控制台打开的情况下运行上述jsbin,您将看到阵列中有一个模板“application”。我的猜测是,如果您在您的环境中尝试相同的操作,那么数组将是空的


有很多方法可以做到这一点,这取决于您的环境。既然你在3000端口上运行,我猜那是rails。在这种情况下,请查看ember rails宝石。到目前为止,最简单的短期方法是在HTML页面中使用
script
标记定义模板,就像我在jsbin中所做的那样

是,余烬模板对象为空。我试图使用handlebars_assets gem,结果做了一个rake assets:precompile。不确定为什么链轮没有在开发过程中动态编译它们。