加载不在路线上的数据?

时间:2016-08-10 19:49:50

标签: ember.js ember-data

我在表单上设置了下拉菜单,但如果我的数据不在路线中,我该如何设置?我正在尝试在新的经销商表格中加载一份地区列表。我已添加了ember-power-select add,但我无法弄清楚如何将数据加载到add on以显示可用选项。我是否需要创建服务或控制器?

刚刚尝试完成基础知识的新手。

  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>

1 个答案:

答案 0 :(得分:1)

仅仅因为路线是区域的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