Ember.js 在willTransition钩子中调用route.refresh()是否正常?

Ember.js 在willTransition钩子中调用route.refresh()是否正常?,ember.js,Ember.js,这个问题与EmberJS最佳实践有关。我有两条路线: /食客 /食客/登记 现在,我想在从/diners/register转换后重新加载/diners的模型(由于使用transitionToRoute成功地注册了食客) 问题是: 我在操作中使用this.refresh():willtransion;这正常吗? 我应该这样做吗 还有哪些方法可以刷新的模型 从子管线过渡后的父管线 我怎么能 发布新邮件时,保持客户端数据的一致性 记录到后端 余烬版本信息: DEBUG: Ember :

这个问题与EmberJS最佳实践有关。我有两条路线:

  • /食客
  • /食客/登记
  • 现在,我想在从/diners/register转换后重新加载/diners的模型(由于使用transitionToRoute成功地注册了食客)

    问题是:

    • 我在操作中使用
      this.refresh()
      :willtransion;这正常吗? 我应该这样做吗
    • 还有哪些方法可以刷新的模型 从子管线过渡后的父管线
    • 我怎么能 发布新邮件时,保持客户端数据的一致性 记录到后端
    余烬版本信息:

    DEBUG: Ember      : 1.13.11
    DEBUG: Ember Data : 1.13.15
    DEBUG: jQuery     : 1.11.3 
    
    用代码更新 就餐登记控制器:

    export default Ember.Controller.extend({
      actions: {
        save () {
          var data = this.model;
          var record = this.store.createRecord('diner', data);
          record.save().then(onFulfill, onFail);
    
          var self = this;
          function onFulfill () {
            Ember.$('.ui.modal').modal('destroy');
    
            self.transitionToRoute('diners');
          }
    
          function onFail (e) {
            console.error(e.message || 'Unknown error');
          }
        },
    
        cancel () {
          Ember.$('.ui.modal').modal('close');
    
          this.transitionTo('diners');
        }
      }
    });
    
    export default Ember.Route.extend({
      queryParams: {
    
      page: {
          refreshModel: true
        }
      },
      setupController (controller, model) {
        let pageSize = 10;
        let page = this.paramsFor('diners').page;
        let total = model.meta.total;
    
        controller.set('model', model);
    
        if (page > 1) {
          controller.set('prevPage', page - 1);
        }
        else {
          controller.set('prevPage', undefined);
        }
    
        if (total > pageSize * page) {
          controller.set('nextPage', page + 1);
        }
        else {
          controller.set('nextPage', undefined);
        }
      },
      model (params) {
        let page = params.page || 1;
    
        return this.store.find('diner', {
          page
        });
      },
      actions: {
        willTransition () {
          this.refresh();
        }
      }
    });
    
    就餐者名单路线:

    export default Ember.Controller.extend({
      actions: {
        save () {
          var data = this.model;
          var record = this.store.createRecord('diner', data);
          record.save().then(onFulfill, onFail);
    
          var self = this;
          function onFulfill () {
            Ember.$('.ui.modal').modal('destroy');
    
            self.transitionToRoute('diners');
          }
    
          function onFail (e) {
            console.error(e.message || 'Unknown error');
          }
        },
    
        cancel () {
          Ember.$('.ui.modal').modal('close');
    
          this.transitionTo('diners');
        }
      }
    });
    
    export default Ember.Route.extend({
      queryParams: {
    
      page: {
          refreshModel: true
        }
      },
      setupController (controller, model) {
        let pageSize = 10;
        let page = this.paramsFor('diners').page;
        let total = model.meta.total;
    
        controller.set('model', model);
    
        if (page > 1) {
          controller.set('prevPage', page - 1);
        }
        else {
          controller.set('prevPage', undefined);
        }
    
        if (total > pageSize * page) {
          controller.set('nextPage', page + 1);
        }
        else {
          controller.set('nextPage', undefined);
        }
      },
      model (params) {
        let page = params.page || 1;
    
        return this.store.find('diner', {
          page
        });
      },
      actions: {
        willTransition () {
          this.refresh();
        }
      }
    });
    

    您能否将注册码添加到问题中,特别是保存和转换的部分。@Kitler谢谢!我已经按照你的要求更新了问题。请注意最后5行
    操作:…
    能否将注册码添加到问题中,特别是保存和转换的部分。@Kitler谢谢!我已经按照你的要求更新了问题。注意最后5行
    操作:…