Ember.js在transitionToRoute调用上清除控制器

时间:2014-05-02 17:47:35

标签: ember.js

我有一个显示宗地列表的路线,以及一个允许用户选择要显示哪个州的宗地的Ember.Select。

模型

App.Parcel = DS.Model.extend({
    addresses: DS.attr('array')
});

路线

App.ParcelsRoute = Ember.Route.extend({
  state: null,
  renderTemplate: function () {
    this.render({ outlet: 'parcels' });
  },
  model: function (params) {
    state = params.state;
    App.ParcelAdapter.state = state;
    App.ImageAdapter.state = state;
    return Ember.RSVP.hash({
        props: this.store.findAll('parcel'),
        states: this.store.findAll('state'),
    });
  },
  setupController: function (controller, model) {
    controller.set('states', model.states);
    controller.set('props', model.props);
    controller.set('selectedState', state);
  }
});

控制器

App.ParcelsController = Ember.ObjectController.extend({
  selectedState: null,
  props: null,
  states: null,
  first: true,
  modelReloadNeeded: function () {
    if (this.get('selectedState') != undefined && !this.get('first')) {
        this.transitionToRoute('/parcels/' + this.get('selectedState'));
    }else{
        this.set('first', false);
    }
  }.observes('selectedState')
});

车把

<script type="text/x-handlebars" id="parcels">
    {{view Ember.Select content=states optionValuePath="content.id" optionLabelPath="content.id" value=selectedState}}
    <input class="search" placeholder="Search"/>
    <ul class="list nav">
        {{#each props}}
        <li>{{#link-to 'parcel' this}}<h3 class="name">{{addresses.0.street_address}}</h3>{{/link-to}}</li>
        {{/each}}
    </ul>
</script>

当选择转换到新路由时,旧路由数据和新路由都在模型中,但是如果我重新加载页面,则仅加载当前路由数据。有没有办法在没有location.reload()调用的情况下清除控制器中道具的DS.RecordArray?

0 个答案:

没有答案