为什么application.hbs不在emberjs中呈现

时间:2013-01-19 16:15:52

标签: 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.IndexRoute = Ember.Route.extend
  renderTemplate: ->
    @render('index')

这是templates目录中的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>

问题是它不呈现此模板。在基本URL“http://127.0.0.1:3000/”加载应用程序时,它不会引发错误。如果我尝试一个未定义的路由会抛出错误,所以我知道Ember已经加载了。

1 个答案:

答案 0 :(得分:2)

您的余烬代码似乎没有任何问题。我在jsbin上做了一个副本,它工作正常:http://jsbin.com/ipivoz/1/edit

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

window.App = Ember.Application.create({
  ready: function() {
    console.log("Ember.TEMPLATES: ", Ember.TEMPLATES);
  }
});

Ember期望编译好的把手模板在这个数组中。如果在js控制台打开的情况下运行上面的jsbin,你会发现数组中有一个模板'application'。我的猜测是,如果你在你的环境中尝试相同的数组,那么数组将是空的。

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