2013-07-24 27 views
0

在我的项目中,我使用Angular UI的ui路由器来嵌套视图。我的布局(特定记录页)看起来是这样的:由于嵌套视图和继承模型,表格不识别无效字段

enter image description here

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

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

我有点卡在这个,任何帮助将不胜感激。

回答

0

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

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

这意味着每个子视图被加载时它从父获取更新的副本,以便它不会持续无效的更改。

只是推动验证正确启动会更好,但目前看不到这种方法。