Ember手动URL更改不会更新页面

时间:2013-05-13 18:04:25

标签: ember.js

我需要一些帮助。目前,如果我进入我的Ember应用程序到这样的网址

/#/clients/some-client/claims/123

页面加载得如此。如果我手动将网址更改为像这样的简单

/#/clients/some-client/claims/456

它不会更改数据。我必须确保页面进行硬刷新以获取当前数据。

我在控制台中获取了事件跟踪,因为我在我的应用程序中设置了LOG_TRANSITIONS

Transitioned into 'clients.client.claims.claim.index'

我想知道哪里出错了?

路由器

Nucleus.Router.map(function () {
  this.resource("clients", { path: 'clients' }, function () {
    this.resource("client", { path: ':client_id' }, function () {
      this.resource("claims", function () {
        this.resource('claim', { path: '/:claim_id/:claim_sub' }, function () {
          this.resource('lines', function () {
            this.resource('line', { path: ':line_id' }, function () {
              this.resource('flags', function () {
                this.resource('flag', { path: ':flag_id' });
              });
            });
          });
        });
      });
    });
  });
  this.route("errors", { path: '/errors/:error_id' });
});

我的路线看起来像这样

Nucleus.ClientsRoute = Nucleus.Route.extend({
  model: function (params) {
    return Nucleus.Client.find('clients');
  }
});

Nucleus.ClientRoute = Nucleus.Route.extend({
  model: function (params) {
    return Nucleus.Client.find('client', params);
  }
});

    Nucleus.ClaimsRoute = Nucleus.Route.extend({
      model: function (params) {
        var client = this.modelFor('client'),
            clientId = client.get('data.id');

        params.client_id = clientId;
        return Nucleus.Claim.find('claims', params);
      },

      goToNextClaim: function (claim) {
        this.transitionTo('claim', claim);
      }
    });

    Nucleus.ClaimRoute = Nucleus.Route.extend({
      model: function (params) {
        var client = this.modelFor('client'),
            clientId = client.get('data.id');

        params.client_id = clientId;
        return Nucleus.Claim.find('claim', params);
      }
    });

Nucleus.ApplicationRoute = Ember.Route.extend({

  setupController: function () {
    this.controllerFor('meta_property').set('model', Nucleus.MetaProperty.find('meta_property'));
    this.controllerFor('header').set('model', Nucleus.User.find("user"));
  }

});

控制器就像这样

Nucleus.ApplicationController = Nucleus.Controller.extend({
  needs: ['meta_property'],

  isErrorPage: false,

  currentPathDidChange: function () {
    if (this.get('currentPath') === 'errors') {
      this.set('isErrorPage', true);
    } else {
      this.set('isErrorPage', false);
    }
  }.observes('currentPath')

});

Nucleus.ClaimController = Nucleus.ObjectController.extend({});
Nucleus.ClientController = Nucleus.ObjectController.extend({});

0 个答案:

没有答案