在我的项目中,我使用Angular UI的ui-router进行嵌套视图。我的布局(在特定的记录页面上)如下所示:
在第一次加载时,一切正常,验证工作,表单保存对模型的更改等。当您对表单进行更改时会出现问题,使其处于无效状态,然后浏览到另一个子导航链接,然后再回去此时,先前加载的表单已更改从父视图继承的模型,使其无效,但新表单已加载该模型,认为其所有字段都是原始的,因此表单现在处于允许用户的有效状态绕过客户端验证。除非用户编辑字段,否则我似乎无法使表单唤醒并再次自动验证。
我可以解决此问题的一种方法是在嵌套视图控制器中加载模型,因此当您从子导航再次单击返回表单时,它会加载一个新模型,但我不认为这是正确的解决方案特别是因为在第一次加载时,父视图和子视图都将为模型执行GET。
我有点卡在这一点上,任何帮助都会非常感激。
答案 0 :(得分:0)
我现在提出的解决方案是在子视图控制器中复制资源:
$scope.parent.$watch('record', function(record) {
if (!record) return;
$scope.record = angular.copy(record);
}
这意味着每次加载子视图时,它都会从父级获取更新的副本,因此它不会保留无效的更改。
最好只是轻推验证才能正确启动,但我目前无法看到这样做的方法。