簡體   English   中英

EmberJS嵌套路線模型

[英]EmberJS nested route model

我正在使用EmberJS 1.13.3,EmberData 1.13.4,活動模型適配器1.13.3,我正在嘗試從商店加載一些模型數據。 父路由調用API並按預期工作,但子路由調用API但返回時出現以下錯誤:

Cannot read property '_internalModel' of undefined TypeError: Cannot read property '_internalModel' of undefined

我的代碼看起來像這樣:

文件: routes/user.js

import Ember from 'ember';

export default Ember.Route.extend({
  titleToken: function() {
    return 'Profile';
  },

  model: function(params) {
    return Ember.RSVP.hash({
      user: this.store.findRecord('user', params.username)
    });
  },

  setupController: function(controller, models) {
    this._super(controller, models);
    controller.setProperties(models);
  }
});

文件: routes/user/posts.js

import Ember from 'ember';

export default Ember.Route.extend({
  titleToken: function() {
    return 'Posts';
  },

  model: function() {
    return Ember.RSVP.hash({
      posts: this.store.findRecord('post', 'my_username')
    });
  },

  setupController: function(controller, models) {
    controller.setProperties(models);
  }
});

兩者的JSON響應如下所示:

用戶路線:

{
  "user": {
    "id":"1",
    "username":"my_username",
    "first_name":"John",
    "last_name":"Doe",
    "post_ids":[1, 2]
  }
}

帖子路線:

{
  "posts":[
    { "id": 1, "author": "John Doe", "text": "My post", "username": "my_username", "user_id": 1 },
    { "id": 2, "author": "John Doe", "text": "My post2", "username": "my_username", "user_id": 1 }
  ]
}

router.js的代碼

Router.map(function() {

  this.route('user', { path: '/:username' }, function() {
    this.route('posts');
  });

  this.route('login');
});

傳遞ID以外的其他內容以findfind findRecord方法時會發生此錯誤。 我必須說,這不是一個非常有用的錯誤消息。

無論如何,你可以在這里閱讀一些文檔: http//emberjs.com/blog/2015/06/18/ember-data-1-13-released.html#toc_simplified-find-methods

我有同樣的錯誤。 在我的情況下,問題是我的燈具不一致,如下例所示:

GET /sports

[{id: 1, name: 'Sport A'}, {id:2, name: 'Sport B'}]

GET /sports/1
{id: 1, name: 'Sport C'}

我有同樣的錯誤,我設法通過查看Ember Inspector中的“Promises”選項卡來隔離導致問題的正確代碼行,僅搜索拒絕承諾,其中一個具有履行/拒絕值“TypeError:無法讀取未定義的屬性'_internalModel'。 承諾的標簽給了我記錄失敗的操作,模型和id。 https://github.com/emberjs/ember.js/issues/11863#issuecomment-123898242

就我而言,我從服務器返回{}作為對findRecord方法的響應。

在我的情況下,服務器沒有返回根元素。 因此,對於用戶服務器返回:

{name: name, surname: surname}

代替

user: {name: name, surname: surname}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM