Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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 Angularjs模型更新延迟_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs模型更新延迟

Javascript Angularjs模型更新延迟,javascript,angularjs,Javascript,Angularjs,更新模型时似乎有延迟。 如果我在更新模型后立即提交表格,则将提交旧数据,但如果我在1秒后提交,则其工作正常: 编辑1:演示代码只是我最终代码的简化版本,用于演示问题:提交表单时,“城市”字段的值为“NY”而不是“LA” 编辑2:感谢所有关于最佳实践和替代方法的建议,但我问了这个问题,想知道使用angularjs是否会导致绑定延迟,如果答案是肯定的,那么使用是否不安全?使用ngSubmit和按钮,而不是链接和ngClick。我认为问题在于,您在方法中手动触发表单提交。那不是必要的。顺便说一句,您

更新模型时似乎有延迟。 如果我在更新模型后立即提交表格,则将提交旧数据,但如果我在1秒后提交,则其工作正常:

编辑1:演示代码只是我最终代码的简化版本,用于演示问题:提交表单时,“城市”字段的值为“NY”而不是“LA”


编辑2:感谢所有关于最佳实践和替代方法的建议,但我问了这个问题,想知道使用angularjs是否会导致绑定延迟,如果答案是肯定的,那么使用是否不安全?

使用
ngSubmit
和按钮,而不是链接和
ngClick
。我认为问题在于,您在方法中手动触发表单提交。那不是必要的。顺便说一句,您应该避免将jQuery
$(“…”)
用于angular,因为您对jQuery所做的大多数更改都不会被angular识别

<form id="myform" method="POST" ng-submit="submitForm()">
  <input type="text" name="city" id="city" ng-model="city">{{ city }}
  <button type="submit">Click Here</button>
</form>

{{城市}
点击这里

我强烈建议您不要在Angularjs中执行Jquery代码:

AVOID: $("#myform").submit();
除此之外,我不明白在这个用例中使用angularjs的意义。 您没有采用angularjs最佳实践,即在使用标准html POST请求时,您应该通过POST服务发送信息


我希望这会有所帮助。

提交旧数据的确切含义是什么?您指的是单击“单击此处”吗?通常更新文本字段会立即显示右侧文本的变化。iirc,使用摘要循环和脏检查进行双向绑定,因此,在您的submit方法调用时,视图尚未更新。@SatejS根据旧数据,我指的是'city'隐藏字段的初始值,即'NY'@HarryLim,您似乎已经指出了根本原因。表单发送的值与视图无关,因此在
$scope.city
函数中是否存在提交表单的angularjs版本,该版本与模型更新延迟有关?我认为这取决于您试图做什么。您不能使用POST请求提交数据吗(这对于Angular SPA来说很常见)?示例代码只是我最终代码的一小部分。表单对用户不可见,因此我不得不以某种方式调用表单提交,但我找不到angularjs方式。如果表单是隐藏的,那么您甚至不需要html表单,您只需通过$http服务将POST请求发送到您的服务器/API即可。因为用户必须转到下一页,并且在该页中,我们根据表单数据进行一些处理,所以我不能使用$http服务(XMLHttpRequest)你可以发布数据并将用户重定向到下一页。在我的应用程序中,用户进行某种交互,基于此,我必须将他发送到另一页,并提供一些发布数据,因此表单对用户完全隐藏,这就是我使用jQuery代码提交表单的原因。是否有更好的方式从控制器提交表单?