Ember.js根视图在刷新时不会呈现

时间:2014-01-28 04:57:16

标签: javascript ember.js url-routing ember.js-view

我有一个带有插座的根模板,然后是一个嵌套的动态资源。在根视图中的输入中输入名称时,ajax请求将异步检索嵌套动态资源的模型,并使用该模型中的信息呈现模板。当我从根开始并使用输入来调用嵌套资源时,一切正常。

所以一切都运行良好,嵌套资源更新了网址,但是当我刷新或粘贴网址到导航栏时,我只得到一个空白页面。没有错误,但根本没有HTML。我已经验证了ajax请求是否成功并且我的模型已创建。据我所知,根模板没有渲染,因此我的嵌套模板无处可去。

我认为ember应该让这个变得简单和自动,当我直接进入嵌套路线时如何渲染根模板?

这是路由器:

App.Router.map(function() {
  this.resource('app', {path: '/'}, function(){
    this.resource('user', {path: ':screen_name'});
  });
});

App.IndexRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('app');
  }
});

App.UserRoute = Ember.Route.extend({
  model: function(params) {
    var that = this;
    var promise = Ember.$.getJSON('/users/new?screen_name=' + params['screen_name']);

    promise.then(fulfill, reject);

    function fulfill (answer) {
      return that.store.createRecord('user', answer);
    }

    function reject (reason) {
      console.log("failure");
      return false;
    }

    return promise;
  },

  serialize: function(user) {
    return {screen_name: user.get('user.screen_name')};
  }
});

以下是AppController

App.AppController = Ember.ObjectController.extend({
  actions: {
    findUser: function(){
      var that = this;
      var name = that.get('screen_name');
      that.set('screen_name', '');
      that.transitionToRoute('user', name);
    }
  },

  screen_name: ''
});

App.AppIndexController = Ember.ObjectController.extend({
  needs: "app",
  app: Ember.computed.alias("controllers.app")
});

以下是UserController

App.UserController = Ember.ObjectController.extend({
  needs: "app",

  backgroundPic: function(){
    return this.get('model.user.profile_banner_url');
  }.property('model.user.profile_banner_url'),

  profilePic: function(){
    return this.get('model.user.profile_image_url');
  }.property('model.user.profile_image_url')
});

这是user模型,它只接受AJAX请求返回的JSON对象:

App.User = DS.Model.extend();

0 个答案:

没有答案