0

在我的项目中,我将 Angular UI 的 ui-router 用于嵌套视图。我的布局(在特定记录页面上)如下所示:

在此处输入图像描述

第一次加载时一切正常,验证正常,表单保存对模型的更改等。当您对表单进行更改使其处于无效状态时,就会出现问题,然后浏览到另一个子导航链接,然后再返回. 此时,先前加载的表单已经更改了从父视图继承的模型,使其无效,但新表单已加载该模型,认为其所有字段都是原始的,因此表单现在处于允许用户的有效状态绕过客户端验证。除非用户编辑字段,否则我似乎无法让表单唤醒并再次自动验证。

我可以解决此问题的一种方法是将模型加载到嵌套视图控制器中,因此当您再次从子导航单击返回表单时,它会加载一个新模型,但我认为这不是正确的解决方案,尤其是因为首先加载父视图和子视图都将为模型执行 GET。

我对此有点坚持,任何帮助将不胜感激。

4

1 回答 1

0

我现在想出的解决方案是在子视图控制器中复制资源:

$scope.parent.$watch('record', function(record) {
    if (!record) return;
    $scope.record = angular.copy(record);
}

这意味着每次加载子视图时,它都会从父视图中获取更新的副本,因此它不会保留无效的更改。

最好只是轻推验证以正确启动,但我目前看不到这样做的方法。

于 2013-07-24T15:37:42.777 回答