使用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已经加载了。
答案 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中所做的那样。