4

我对 Ember.js 很陌生,在开发应用程序时,我刚刚发现了新的路由器 API。它被合并并且根本没有文档(除了这个 - https://gist.github.com/3981133

我什至不知道如何开始将我的应用程序转换为新的路由器 API。这个“演练”没有多大帮助。

1)如何将模板连接到命名的插座,例如 {{outlet main}} ?

2)我使用 App.router.someController 和 App.router.get('store').findAll() 和 .find() 全部,应该用什么替换?

3)html中的handlebars标签有什么变化<script type="text/x-handlebars" data-template-name="templateName">吗?

这就是我现在能想到的..

4

1 回答 1

5

我刚刚在一个小示例项目中自己完成了这个升级

https://github.com/toranb/ember-code-camp

直接回答你的几个问题

1) 不再有 connectOutlets 噪音 - 只需将路由映射到 ember 路由类/对象。这种方法是非常基于约定的顺便说一句(模板/视图/控制器/路由都匹配)

CodeCamp.Router.map(function(match) {
  match("/").to("sessions");
  match("/session/:session_id").to("session"); //no route needed -ember will apply the context for you
  match("/speaker/:speaker_id").to("speaker"); //same as above so long as my handlebars template name matches (speaker for this route)
});

CodeCamp.SessionsRoute = Ember.Route.extend({
  setupControllers: function(controller) {
    controller.set('content', CodeCamp.Session.find());
  }
});

2 a)你像这样在路由器中获得商店

App.YourObject.find()

2 b)您可以像这样从控制器内提交商店

this.get('store').commit()

3)我的车把东西没有改变,除了路线相关的助手

I remove action helpers defined with <a {{action and used linkTo instead

  {{#linkTo 'session' session}}View Session Details{{/linkTo}}
于 2012-12-31T15:11:37.767 回答