【问题标题】:Ember Data BindingEmber 数据绑定
【发布时间】:2013-10-26 19:56:27
【问题描述】:

假设我有一个包含 2 个预填充字段的模型。我想在 DOM 中显示这些字段,以便用户在必要时进行修改。如果我使用 {{input value=field1}} 和 {{input value=field2}} 将 DOM 绑定到模型,那么每次用户在这些字段之一中输入字符时,Ember 都会立即更新绑定模型。这不是我想要的行为。我更喜欢显示一个按钮;按下时,我想验证两个字段中的数据相互关联,如果有效,则更新模型。

我考虑在控制器中创建镜像字段并将它们绑定到 DOM。然后创建与按钮关联的操作来进行验证,如果发现数据有效,则将数据从控制器字段复制到相应的模型字段。这种技术可能有效,但似乎是一种非常迂回的方式来做一些概念上简单的事情。

你们当中的一位 Ember 专家对如何最好地做到这一点有意见吗?我正在寻找最佳实践;请帮忙。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我不是专家,也不熟悉 EmberData 中的客户端验证,因为我们的应用使用服务器端验证。

    1. 您确定不能让您的模型立即更新(即绑定到模板字段)吗?

      如果您确实绑定了模型,那么您可以在提交时进行验证。如果验证失败,您只需 rollback 更改即可。如果通过,您可以save记录。这可能是我会做的。

    2. 但是,您明确声明不希望立即更新模型,这意味着您不想绑定模型。

      此外,您必须进行一些依赖于多个字段的处理才能进行验证,因此听起来确实像绑定到控制器并进行验证操作是一个很好的解决方案,如果我没有绑定到,我会这样做模型。

    【讨论】:

    • 控制器变量绑定方法的问题是我首先必须将字段值从模型复制到控制器才能显示,然后在验证后复制回模型。这是大量的数据来回移动,感觉不对劲。我还注意到有一个“未绑定”的 Handlebar 助手,可以让我在不绑定的情况下显示数据。但是我目前还不太清楚如果我使用这个助手,我将如何从 dom 中获取数据以进行验证并随后传输到模型。
    • 我可能不会将两个字段描述为“大量数据”。此外,这个未绑定的助手听起来很奇怪,因为您显然是在告诉它从什么数据开始(例如,与在控制器上设置数据大致相同)& 现在您需要从 DOM 中提取数据以在模型上设置(而不是比我认为更清洁的绑定控制器)。 Ember 的方式是使用绑定。
    • @user2436810 我已经用第一个解决方案更新了我的答案,即实际绑定到模型并使用rollback
    猜你喜欢
    • 2014-01-18
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多