应用程序路由是否自动加载并在Ember应用程序中加载application.hbs?

时间:2015-11-02 14:32:15

标签: ember.js

我有这个作为我的router.js。请注意,它没有应用程序路径:

import Ember from 'ember';
import config from './config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

Router.map(function() {
  this.route('todos', { path: '/'});
});

export default Router;

当我点击主路径时,我看到我的application.hbs模板和todos.hbs模板已加载到插座中。这是我的application.hbs:

<section id="todoapp">
  <header id="header">
    <h1>todos header in application.hbs</h1>
  </header>

  {{outlet}}
</section>

<footer id="info">
  <p>
    Footer in application.hbs. Double-click to edit a todo
  </p>
</footer>

为什么我的application.hbs会被加载?

我认为Ember知道也在我的路线文件夹中加载todos.js:

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    let todos = [
      {
        title: 'Learn Ember',
        complete: false,
      },
      {
        title: 'Solve World Hunger',
        complete: false,
      }
    ];
    return todos;
  }
});

这是我的todos.hbs模板:

<h2>Todos Template</h2>

<ul>
    {{#each model as |todo|}}
        <li>
            {{todo.title}}
        </li>
    {{/each}}
</ul>

主要问题
1.为什么我的application.hbs在我到达主路线时会被加载? 2.什么是出口违约的意思? 3.什么是线条导入Ember来自&#39; ember&#39;在做什么?在哪里&#39; ember&#39;来自(哪里?

1 个答案:

答案 0 :(得分:1)

  1. 应用程序路由加载到每个Ember.js应用程序中。请参阅http://guides.emberjs.com/v2.1.0/routing/defining-your-routes/#toc_the-application-route

  2. export default是ES6模块规范的一部分。请参阅http://exploringjs.com/es6/ch_modules.html当将该模块导入另一个模块时,将对象或变量作为要导入的默认值返回。

  3. &#39; ember&#39;命名空间内置于Ember CLI中。它的默认导出本身是Ember变量,它曾经是以前版本的Ember中的全局变量。