【问题标题】:Customizing what data is submitted with Ember Data自定义使用 Ember Data 提交的数据
【发布时间】:2014-03-09 04:21:08
【问题描述】:

在 Ember 中,我通常会提交这样的资源:

App.FooNewController = Ember.ObjectController.extend(

  actions:
    submit: ->
      @get('model').save().then ((response) =>
        @transitionToRoute('foo', @content)
      ), (response) =>
        @set "errors", response.errors
)

之所以有效,是因为用户输入到 Foo 表单中的所有数据都可以很好地转换为 Foo 模型。但是包含敏感信息(例如密码和电子邮件地址)的 User 模型呢?我不希望在模型中包含这些信息。但是,如果它不存在,那么当我提交包含这些字段的用户表单时,Ember Data 将不会向服务器提交密码和电子邮件,即使它提交了用户名等非敏感数据。

所以我的问题是,如何让 Ember Data 在提交时包含密码和电子邮件字段?我正在使用 ActiveModelAdapter。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您的模型应包含敏感字段,例如:

    App.User= DS.Model.extend({
        userName: DS.attr('string'),
        email: DS.attr('string'),
        password: DS.attr('string'),
        passwordConfirmation: DS.attr('string')
    };
    

    但是,当请求用户时,您的服务器不应发送电子邮件/密码信息。在您看来,您可以让用户添加此信息,然后当您执行以下操作时:

    this.get('model').save();
    

    用户填写的电子邮件和密码将提交给服务器。然后,服务器应回复模型数据的副本,不包括电子邮件和密码,这将导致模型更新为空白电子邮件和密码。

    此外,当用户在没有向服务器提交数据的情况下离开您的视图时,最好执行以下操作:

    this.get('model').rollback();
    

    这将回滚用户可能对视图中的字段所做的任何更改。

    【讨论】:

    • 对不起,应该早点接受这种方式。完美的答案。这很有意义,您可以通过解释一些微妙的后果来超越。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多