Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 未捕获错误:未找到';型号';_Ember.js_Ember Data - Fatal编程技术网

Ember.js 未捕获错误:未找到';型号';

Ember.js 未捕获错误:未找到';型号';,ember.js,ember-data,Ember.js,Ember Data,我正在使用以下内容构建一个Ember CLI应用程序: DEBUG: Ember : 1.10.0 DEBUG: Ember Data : 1.0.0-beta.15 DEBUG: jQuery : 2.1.3 使用表单,我试图在两个不同的模型上保存更改。 其中一个模型(用户模型)成功保存,而另一个模型(配置文件模型)抛出此错误: Uncaught Erro

我正在使用以下内容构建一个Ember CLI应用程序:

DEBUG: Ember                          : 1.10.0
DEBUG: Ember Data                     : 1.0.0-beta.15
DEBUG: jQuery                         : 2.1.3
使用表单,我试图在两个不同的模型上保存更改。 其中一个模型(用户模型)成功保存,而另一个模型(配置文件模型)抛出此错误:

Uncaught Error: No model was found for 'userProfile'
型号

这两种模式是:

models/user.js
models/user/profile.js
用户模型:

import DS from "ember-data";

export default DS.Model.extend({
    email: DS.attr('string'),
    username: DS.attr('string'),
    firstname: DS.attr('string'),
    lastname: DS.attr('string'),
    comments: DS.hasMany('comments'),
});
配置文件模型:

import DS from "ember-data";

export default DS.Model.extend({
  avatar: DS.attr('string'),
  educationDegree: DS.attr('string'),
  educationUniversity: DS.attr('string'),
  workRole: DS.attr('string'),
  workOrganisation: DS.attr('string'),
  interests: DS.attr('string'),
});
控制器

import Ember from "ember";

export default Ember.Controller.extend({
  saved:false,
  actions: {
    save:function(){
      this.get('model.user').save();
      this.get('model.profile').save();
      this.set('saved',true);
    },
  },
});
路线

import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin, {
  model: function(){
    var _this = this;
    var currentUser = this.get('session.user');

    return new Ember.RSVP.all([
      _this.store.find('user', currentUser.id),
      _this.store.find('user.profile', {UserId: currentUser.id}),
    ]).then(function(values){
      return {
        user: values[0],
        profile: values[1].get('firstObject'),
      }
    });
  },
});
<form {{action "save" on="submit"}}>
  {{input type="text" placeholder="First Name" value=model.user.firstname}}
  {{input type="text" placeholder="Last Name" value=model.user.lastname}}
  {{input type="email" placeholder="Email" value=model.user.email}}
  {{input type="text" placeholder="Affiliation" value=model.profile.workOrganisation}}
  <button type="submit" class="btn teal white-text">Save</button>
  {{#if saved}}
    <p class="text-valid">Save Successful.</p>
  {{/if}}
</form>
模板

import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin, {
  model: function(){
    var _this = this;
    var currentUser = this.get('session.user');

    return new Ember.RSVP.all([
      _this.store.find('user', currentUser.id),
      _this.store.find('user.profile', {UserId: currentUser.id}),
    ]).then(function(values){
      return {
        user: values[0],
        profile: values[1].get('firstObject'),
      }
    });
  },
});
<form {{action "save" on="submit"}}>
  {{input type="text" placeholder="First Name" value=model.user.firstname}}
  {{input type="text" placeholder="Last Name" value=model.user.lastname}}
  {{input type="email" placeholder="Email" value=model.user.email}}
  {{input type="text" placeholder="Affiliation" value=model.profile.workOrganisation}}
  <button type="submit" class="btn teal white-text">Save</button>
  {{#if saved}}
    <p class="text-valid">Save Successful.</p>
  {{/if}}
</form>

{{input type=“text”placeholder=“First Name”value=model.user.firstname}
{{input type=“text”placeholder=“Last Name”value=model.user.lastname}
{{input type=“email”placeholder=“email”value=model.user.email}
{{input type=“text”placeholder=“Affiliation”value=model.profile.workorganization}
拯救
{{#如果保存}

保存成功

{{/if}
发生此错误的原因是,Ember Data找不到一个模型,无法将保存后的PUT返回的数据插入其中,我假设该模型如下所示

{ userProfile: { ... } }
我不知道Ember根据这些“根键”(如
userProfile
)查找模型的确切规则,但我怀疑它是否能找到隐藏在
models/user/
下面的
profile
模型

在过去,如果您可以控制服务器,以下内容对我有效:

{ "user/profile": { ... } }
如果您无法更改服务器响应,或者由于其他原因无法正常工作,最简单的方法是将
配置文件
模型移动到
模型
目录的顶层,并将其命名为
user profile.js

另一种选择是从PayloadKey玩
modelname

// serializers/application.js
import DS from 'ember-data';

export default DS.RESTSerializer.extend({
    modelNameFromPayloadKey: function(payloadKey) {
        if (payloadKey === 'userProfile') payloadKey = 'user/profile';
        return this._super(payloadKey);
    }
 });

你能发布模板和模型吗?当然,我现在已经添加了,非常感谢。将概要文件模型从用户目录中取出非常有效。也感谢您选择答案:)