加载不在路线上的数据?

Loading data that isnt on the route?

我在表单上设置了下拉菜单,但如果我的数据不在路由中,我该如何设置?我正在尝试在新的经销商表格中加载区域列表。我添加了 ember-power-select 插件,但我不知道如何将数据加载到插件以显示可用选项。我需要创建服务或控制器吗?

ember 的新手,只是想了解基础知识。

  Router.map(function() {
  this.route('login');
  this.route('admin', function() {
    this.route('territory', function() {
      this.route('new');
      this.route('edit', { path: '/:territory_id/edit'});
      this.route('view', { path: '/:territory_id/view'});
    });
    this.route('dealer', function() {
      this.route('view', { path: '/:dealer_id/view'});
      this.route('new');
    });
  });
});

这是我在创建新项目时使用的表格。

<div class="well">
    <form class="form-horizontal">
        <fieldset>
            <legend>New Dealer</legend>
            <div class="form-group">
            <label for="inputFirstName" class="col-lg-2 control-label">Name</label>
            <div class="col-lg-4">
                {{input type="text" value=model.dealerName class="form-control" placeholder="Dealer Name"}}
            </div>
            </div>
            <div class="form-group">
            <label for="inputFirstName" class="col-lg-2 control-label">Territory</label>
            <div class="col-lg-4">
                {{#power-select  selected=dealer options=dealer onchange=(action "chooseDestination") as |dealer|}} 
                    {{dealer.dealerName}}  
                {{/power-select}}
            </div>
            </div>
            <div class="form-group">
            <div class="col-lg-10 col-lg-offset-2">
                {{#link-to 'admin.dealer' class="btn btn-default"}}Cancel{{/link-to}}
                <button type="submit" class="btn btn-primary" {{action 'saveDealer' model}}>Submit</button>
            </div>
            </div>
        </fieldset>
    </form>
</div>

仅仅因为路线是地区的 new 行动或经销商的 view 行动,并不意味着您不能在那里加载其他数据。

例如,在territory/view路线中,您可以加载所有经销商。

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return Ember.RSVP.hash({
      territory: this.store.find('territory', params.territory_id),
      dealers: this.store.findAll('dealer')
    })
  }
});

然后在您的控制器和模板中,您可以访问 model.territorymodel.dealers