如何为特定模型的Ember数据保存添加参数?

时间:2015-05-06 17:38:59

标签: ember.js ember-data

我要做的是为特定型号的Ember Data保存添加参数。我想要添加的参数将来自和调用我的Grails后端的ajax,以生成CSRF缓解的令牌。其中一个参数将是保存最终将与CSRF令牌一起调用的URL。在grails中,这些参数通常是表单的一部分,如下所示:

<input type="hidden" name="SYNCHRONIZER_TOKEN" value="714af404-b10a-459b-9e09-663a6e4cf6b3" id="SYNCHRONIZER_TOKEN">
<input type="hidden" name="SYNCHRONIZER_URI" value="url the save function is going to use" id="SYNCHRONIZER_URI">

2 个答案:

答案 0 :(得分:0)

这是我的Ember JS Thread回复的副本:

@NathanOliver:

  1. 您为这些值定义了一个模型属性吗?
  2. 如果是这样,您是否尝试过使用.set(属性,值)?
  3. 如果在模型实例上设置CSRF令牌,然后在该实例上调用.save(),则可能不需要隐藏输入。在标准实现中,这将触发现有资源上的PUT请求和新资源上的POST请求。

    在正常情况下,您必须执行以下操作:

    1. 将表单输入绑定到ember-data模型字段
    2. 在(控制器或路由)操作句柄中使用model.set(&#39; csrf_token&#39;,CSRF-token)将先前收到的CSRF令牌设置为模型字段(您需要定义模型中的csrf_token
    3. model.save()现在应该包含令牌。

答案 1 :(得分:0)

所以我找到了另一种方式。我有一个mixin,它会覆盖保存功能。我构建了url,并确定是否应该发布帖子或从模型中放入(对于后来的ajax调用),然后我传递url来调用我拥有的后端服务,以生成令牌,然后我根据该信息发送ajax调用,最后我将结果放回商店。