【问题标题】:Ember Data not sending to serverEmber 数据未发送到服务器
【发布时间】:2017-01-30 18:08:31
【问题描述】:

我有以下代码:

app/models/account.js:

import DS from 'ember-data';

export default DS.Model.extend({
  username: DS.attr('string'),
  birthdate: DS.attr('date'),
  gender: DS.attr('boolean'),
  emailaddresses: DS.attr()
});

和 app/components/account-profile.js:

import Ember from 'ember';

export default Ember.Component.extend({
  buttonLabel: 'Send to Server',
  actions: {
    buttonClicked(param) {
      this.sendAction('action', param);
    }
  }
});

和 app/templates/components/account-profile.hbs

<div class="box">
  <div class="title">Your Profile</div>
  <div>Username: {{account.accountprofile.username}}</div>
  <div>Email Address: {{account.accountprofile.emailaddresses.0.emailaddress}}</div>
  <div>Birthdate: {{account.accountprofile.birthdate}}</div>
  <div>Gender: {{account.accountprofile.gender}}</div>
</div>
<div>
  <div>
    <label>Username</label>
    <div>
      {{input type="text" value=account.accountprofile.username }}
    </div>
    <label>Username</label>
    <div>
      {{input type="text" value=account.accountprofile.emailaddresses.0.emailaddress }}
    </div>
    <label>Username</label>
    <div>
      {{input type="text" value=account.accountprofile.birthdate }}
    </div>
    <label>Username</label>
    <div>
      {{input type="text" value=account.accountprofile.gender }}
    </div>
    <div>
      <div>
        <button type="submit" {{action 'buttonClicked' account}}>{{buttonLabel}}</button>
      </div>
    </div>
  </div>
</div>

我没有看到任何流量从我的网络浏览器发送到我的服务器。

我的代码缺少什么以及有什么问题?我还需要做什么?

【问题讨论】:

  • 请注意,输入表单中缺少电子邮件地址,并且字段名称错误。那不重要。我只是想让 Ember 数据发送到服务器(通过 POST 或 PUT)工作。

标签: ember.js ember-data


【解决方案1】:

请参阅 ember 指南中的 Persisting Records

Ember Data 中的记录基于每个实例进行持久化。称呼 在 DS.Model 的任何实例上保存(),它将发出网络请求。

你需要从记录中调用save方法account.accountprofile像这样this.get('account.accountprofile').save()

【讨论】:

  • 我改成了“this.get('account.accountprofile').save();”事实上,Ember Data 正在向服务器发送一个 PUT 请求。但是,服务器端的请求中没有任何内容。 Ember Data 如何发送请求中的数据?
  • 我也确实通过更改值来确保我“弄脏”了数据。同样,我确实看到服务器上收到了请求,但找不到数据。
  • 我对 ember-data 不太熟悉。在您的情况下,将调用 PUT 请求,您将在请求中获得 account 对象。适配器负责向服务器发送请求,因此请查看适配器的覆盖方法。参考updateRecord
【解决方案2】:

sendAction 不会向服务器发送任何内容。

https://guides.emberjs.com/v1.10.0/components/sending-actions-from-components-to-your-application/

例如,尝试使用 param.save() 来保存您的模型。

【讨论】:

  • 我用 param.save() 替换了它,它说“未捕获的 TypeError:param.save 不是函数”。我在哪里插入 param.save()?
  • 我认为您缺少 ember 编程的一些基础知识。你应该在 guides.emberjs.com/v2.11.0 上做 guids 如果 params.save 不是一个函数,那么 account/params 不是一个 ember-data 模型
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2018-06-07
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多