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
Ember.js 模型抛钩误差。余烬_Ember.js_Ember Data - Fatal编程技术网

Ember.js 模型抛钩误差。余烬

Ember.js 模型抛钩误差。余烬,ember.js,ember-data,Ember.js,Ember Data,在我的应用程序中,用户有很多餐。膳食属于用户。我有它,用户可以通过创建一个记录并保存它来发布一顿饭。完成此操作后,我的控制台立即抛出错误: 错误:断言失败:您需要在出现新错误(本机)时将模型名称传递给存储的modelFor方法。 然后,当我开始出现错误时,我编写了获取膳食的模型钩子: TypeError:无法读取未定义的属性“some” 我不确定这是什么原因造成的。这是我的密码: 用户模型: import DS from 'ember-data'; import { hasMany } from

在我的应用程序中,用户有很多餐。膳食属于用户。我有它,用户可以通过创建一个记录并保存它来发布一顿饭。完成此操作后,我的控制台立即抛出错误:

错误:断言失败:您需要在出现新错误(本机)时将模型名称传递给存储的modelFor方法。

然后,当我开始出现错误时,我编写了获取膳食的模型钩子:

TypeError:无法读取未定义的属性“some”

我不确定这是什么原因造成的。这是我的密码:

用户模型:

import DS from 'ember-data';
import { hasMany } from 'ember-data/relationships';

export default DS.Model.extend({
  email: DS.attr('string'),
  height: DS.attr('number'),
  weight: DS.attr('number'),
  age: DS.attr('number'),
  tdee: DS.attr('number'),
  gender: DS.attr('string'),
  activity_level: DS.attr('number'),
  meals: hasMany('meal')
});
膳食模式:

import DS from 'ember-data';
import { belongsTo, hasMany } from 'ember-data/relationships';

export default DS.Model.extend({
  meal_type: DS.attr('string'),
  created_at: DS.attr('date'),
  user: belongsTo('user'),
  // meal_items: hasMany('meal_item')
});
用餐路线:

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.get('store').findAll('meal');
  },
  actions: {
    createMeal(data) {
      let meal = this.get('store').createRecord('meal', data);
      meal.save();
    }
  }
});
我对灰烬还不熟悉,但我有预感它可能与显式反转有关?敬请指教。如果需要澄清,我可以发布更多代码

编辑:

对服务器的GET请求成功。膳食数据在DS中

因此,我将CreateDine操作传递给我的CreateDine组件:

<label class="col-md-3">Create A Meal</label>
<div class="input-group col-md-8 col-centered create-meal-div">
  {{input value=form.meal_type type="text" class="form-control" placeholder="Enter Meal Name" aria-describedby="basic-addon2"}}
  <span class="input-group-addon" id="basic-addon2"><button type="submit" class="btn-primary" {{action "submit" form on "submit"}}> Start Adding Food</button></span>
</div>

<div class="col-md-6 food-search-div">
  {{food-search}}
</div>

{{创建膳食=模型createmean=“createmean”}

组件在提交时将此操作发送回:

import Ember from 'ember';

export default Ember.Component.extend({
  form: {},
  actions: {
    submit (){
      this.sendAction('createMeal', this.get('form'));
    }
  }
});
以下是该组件的模板:

<label class="col-md-3">Create A Meal</label>
<div class="input-group col-md-8 col-centered create-meal-div">
  {{input value=form.meal_type type="text" class="form-control" placeholder="Enter Meal Name" aria-describedby="basic-addon2"}}
  <span class="input-group-addon" id="basic-addon2"><button type="submit" class="btn-primary" {{action "submit" form on "submit"}}> Start Adding Food</button></span>
</div>

<div class="col-md-6 food-search-div">
  {{food-search}}
</div>
已解决:


在我的用餐模式中删除
user:belongsTo('user'),
消除错误。

我认为问题出在这一行路由器上

return this.get('store').findAll('meal');
试试这个,但奇怪的是它应该能工作

model() {
  return this.store.findAll('meal');
}
在控制器内部,当您在route just this.store内部时,您需要使用此.get('store')。试试看,让我知道它是否有效。此外,在路由中设置操作以将模型接受为param,如下所示

actions: {
  update(model){
    model.save().then( ....
<form {{action 'update' model on='submit'}} autocomplete="off">
这可以从如下模板触发

actions: {
  update(model){
    model.save().then( ....
<form {{action 'update' model on='submit'}} autocomplete="off">

这样,您就不需要在路线中获得this.store-您将通过一个模型,您只需转到save

希望能有帮助

编辑:这也将阻止ember cli预编译

用户:belongsTo('user'), //餐项:有很多(‘餐项’)

所以应该没有,

用户:belongsTo(‘用户’)
//进餐项目:有很多('进餐项目')

仍然收到相同的错误。。。不知道该怎么办。我已经搜索了过去的问题。如何传递此数据CreateMeak(data){…显示触发数据的代码…查看我的更新答案并编辑代码,以便在CreateMeak内直接传入模型在编辑操作之前,让我们在路线中尝试此方法CreateMeak仅用于测试let-Mean=this.get('store')。createRecord('Mean');mean.save()在我仔细查看组件之前,我想确保您能够创建记录。因此,请尝试不要使用params数据,而是在模型名后传入硬编码值。您在服务器端使用rails?对吗?创建记录后,是否返回该记录的json?因此它需要执行类似于MEIN=MEIN.create()的操作…然后稍后呈现json:MEIN status::created…您需要将创建的记录返回给ember。请为mealLet us发布def create方法的代码。