Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 对模型的服务器端更改未反映在UI-JS中_Javascript_Ember.js - Fatal编程技术网

Javascript 对模型的服务器端更改未反映在UI-JS中

Javascript 对模型的服务器端更改未反映在UI-JS中,javascript,ember.js,Javascript,Ember.js,我正在通过调用this.get('model').save()从控制器中持久化我的模型。这将导致对端点的PUT,该端点只返回一条200消息,而不再返回任何内容。但是,在服务器端,有一些自定义规则正在更改数据,使其与Ember发送到服务器的数据不同。这使我的UI和持久层处于不一致的状态 确保UI反映数据在持久化到服务器后的正确状态的正确方法是什么?我的服务器端端点是否应该返回更新的模型?我尝试在save()之后调用这个.get('model').reload(),但UI没有更新。当我这样做的时候,

我正在通过调用this.get('model').save()从控制器中持久化我的模型。这将导致对端点的PUT,该端点只返回一条200消息,而不再返回任何内容。但是,在服务器端,有一些自定义规则正在更改数据,使其与Ember发送到服务器的数据不同。这使我的UI和持久层处于不一致的状态

确保UI反映数据在持久化到服务器后的正确状态的正确方法是什么?我的服务器端端点是否应该返回更新的模型?我尝试在save()之后调用这个.get('model').reload(),但UI没有更新。当我这样做的时候,我可以看到它正在请求并从服务器获取新模型,但正如我所说的,它没有反映在UI中


我觉得余烬中有一些我所缺少的基本知识。谢谢您的帮助。

我想您不是在等待记录完成更新过程

这就是:

this.get('model').reload().then(function() {
  console.log("Now I am ready !");
})

始终记住javascript是异步的。

要建立在htache所说的基础上,您需要将this.get('model').reload()放在this.get('model')块中。是的,这就是我正在做的。save()调用的then()块中有reload()调用。我是否需要在reload()调用的then()块中执行任何操作来更新UI?我认为Ember的数据绑定特性会导致在模型更改时更新UI,但现在似乎不是这样。为什么他需要重新加载模型?您的api端点应该返回与您发送到服务器进行更新的结构相匹配的更新模型。如果有很多关系在起作用,那么您的序列化程序或余烬模型可能有问题。。。您不应该重新加载模型。如果你这样做了,你可能会在整个应用程序中遇到模型绑定问题。好的,谢谢,这就是我的想法。