Ember 2.0路由器无法加载模型数据?

时间:2015-12-10 15:11:36

标签: javascript ember.js ember-cli

我的router.js:

Router.map(function() {
  this.route('portfolio', function() {
    this.route('company', { path:'/company/:id' });
  });
}

在我的路线/ portfolio / company.js中:

import Ember from 'ember';

export default Ember.Route.extend({
    model: function(params) {
    var companyId = params.id;
    return new Ember.RSVP.hash({
            company: Ember.$.ajax({ url: '/api/company/'+companyId, dataType: "json", type: 'GET' })
        }).then(function(message) {
            return message;
        }, function(error) {
            console.log( error );
        });
    }
});

当我导航到app/portfolio/company/1时,我的路线和模板正常加载,但出于某种原因,当我导航到该路线时,Ember不会加载模型(没有错误,但{{model}}变量确实没有填入模板)。只有当我刷新页面时,Ember才会加载模型?!我现在有点困惑......

编辑:添加了缺失的参数并添加了更好的描述

1 个答案:

答案 0 :(得分:0)

我认为在你的模板或控制器中你正在使用这样的模型 model.company将其替换为model,并移除无关的RSVP.hash 因为Ember.$.ajax已经返回了模型钩子可以处理的promise 所以在ES6(ember-cli支持它)中你的模型钩子看起来应该是这样的

model({ id }) {
  return Ember.$.ajax('/api/company/' + id);
}

上面的内容一切都应该有效,发生了什么我认为你只是model传递给{{link-to}},而你的控制器或模板期待model.company这样做会破坏事情