在我的项目中,我使用了Angular的ui路由器作为嵌套视图。我的布局(在特定记录页上)如下所示:
在第一次加载时,所有操作都很有效,验证工作,表单保存对模型的更改等等。当您对表单进行更改,使其处于无效状态时,问题就出现了,然后浏览到另一个子导航链接,然后再返回。此时,上一次加载的表单更改了从父视图继承的模型,使其无效,但是新表单已经加载了该模型,该模型相信其所有字段都是原始的,因此表单现在处于有效状态,允许用户绕过客户端验证。除非用户编辑了一个字段,否则我似乎无法使表单再次自动唤醒和验证。
修复此问题的一种方法是在嵌套视图控制器中加载模型,因此当您再次从sub单击回到表单时,它将加载一个新的模型,但我不认为这是正确的解决方案,特别是在第一次加载时,父视图和子视图都将为模型执行GET。
我有点被困在这个问题上,任何帮助都会很感激的。
发布于 2013-07-24 15:37:42
我现在想出的解决方案是复制子视图控制器中的资源:
$scope.parent.$watch('record', function(record) {
if (!record) return;
$scope.record = angular.copy(record);
}
这意味着每次加载子视图时,它都会从父视图获得一个更新的副本,这样它就不会保存无效的更改。
更好的做法是推动验证,以正确地启动,但我看不到一个方法,目前这样做。
https://stackoverflow.com/questions/17833004
复制相似问题