0

我刚刚开始学习 ember.js,我正在尝试将其集成到现有的 rails 应用程序中。我正在使用 ember-rails gem,除了在 r​​ails{{outlet}}视图中调用时我的模板没有显示之外,一切看起来都很好。这是我的代码的样子。

Rails 视图我希望我的 ember 应用程序在哪里

<script type="text/x-handlebars" data-template-name="application">
  <h1>test</h1>
  {{outlet}}
</script>
<div id="ember-root">

这是我的 ember 应用程序代码:

window.Resumecompanion = Ember.Application.create({
  LOG_TRANSITIONS: true, // basic logging of successful transitions
  LOG_TRANSITIONS_INTERNAL: true, // detailed logging of all routing steps
  rootElement: '#ember-root'
});


Resumecompanion.Router.reopen({});

Resumecompanion.JobsRoute = Ember.Route.extend({})

Resumecompanion.Router.map(function() {
  this.resource('jobs');
});

最后是位于 app/assets/javascripts/templates/jobs.handlebars 中的车把模板

<h1>Jobs</h1>

<p>Your content here.</p>
{{outlet}}

当我运行应用程序时,jobs.hanldebars 中的模板没有出现。在控制台中,我看到了这个:

尝试将 URL 转换为 /jobs

过渡#0:应用程序:调用 beforeModel 钩子

过渡#0:应用程序:调用反序列化钩子

过渡#0:应用程序:调用 afterModel 挂钩

过渡#0:工作:调用 beforeModel 钩子

过渡#0:工作:调用反序列化钩子

过渡#0:工作:调用 afterModel 挂钩

过渡#0:解决了目标路线上的所有模型;完成过渡。

转变为“工作”

过渡#0:过渡完成。

Ember 调试器激活

所以我认为它实际上是路由到“工作”,但我不知道为什么模板似乎没有呈现和显示。任何帮助表示赞赏。

再玩一段时间后,我发现如果我在我的 Rails 视图中声明这个

<script type="text/x-handlebars" data-template-name="jobs">
  <h1>Jobs</h1>
  {{outlet}}
</script>

然后它呈现这个模板并正确显示。所以也许有一个我在模板中不知道的命名问题?

谢谢,

乔什

4

1 回答 1

0

当您在路由器中定义路由或资源时,它还需要引用您的模板。如果您没有该名称的模板,则将没有任何内容可呈现。所以你的假设是正确的,你需要一个“工作”模板来帮助与你的路由器代码对应。

如果您有兴趣,这里有一篇关于路线和资源之间区别的好文章。

http://blog.trackets.com/2013/02/01/ember-dot-js-router-and-template-naming-convention.html

于 2014-08-18T17:42:24.883 回答