我试图将窗格拆分为角度js,其中一个窗格具有验证形式。我已经为表单分配了名称。在控制器中我有表单验证的方法。但是它将错误抛出为'无法读取属性'$ invalid'of undefined'。这是我提供示例的链接。如何使窗格分割器具有表单验证功能。
function canUpdate() {
// Can't update if form fields are bad.
if ($scope.myForm.$invalid) {
return false;
}
return true;
}
答案 0 :(得分:1)
范围无法看到其子范围的属性(更一般地说:后代范围);在这种情况下,控制器设置在表单的父元素中,因此表单的范围是控制器的子节点。这就是控制器中未定义$scope.myForm
的原因。
解决方案是在表单元素中定义一个控制器:
<form name="myForm" class="form-horizontal" ng-controller="myOtherController">
在许多情况下,您甚至可以在内部控制器中移动封闭控制器的逻辑。这是合理的,因为关于表单的逻辑应放在表单附近而不是表单上方。更好的是,将功能封装在指令中。
如果逻辑必须保留在封闭控制器中,那么他们必须以某种方式进行通信; Stack Overflow中的许多问题都解决了控制器通信问题,如果您没有任何更具体的需求,可以使用共享服务。