Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从控制器解耦$scope.form_Angularjs_Unit Testing - Fatal编程技术网

Angularjs 从控制器解耦$scope.form

Angularjs 从控制器解耦$scope.form,angularjs,unit-testing,Angularjs,Unit Testing,在我的角度控制器中,我必须在某一点(当其他字段发生变化时)将一些表单字段重置为原始字段。代码看起来像这样 $scope.fieldCallback = function() { $scope.data.Field = undefined; $scope.form.field.$setPristine(); } 一旦我运行单元测试,这当然会导致问题,因为只有在您实际解析文档时,form.field才会出现(当然,在单元测试没有发生的情况下)。我知道有可能做一些类似的事情 var elem

在我的角度控制器中,我必须在某一点(当其他字段发生变化时)将一些表单字段重置为原始字段。代码看起来像这样

$scope.fieldCallback = function() {
  $scope.data.Field = undefined;
  $scope.form.field.$setPristine();
}
一旦我运行单元测试,这当然会导致问题,因为只有在您实际解析文档时,form.field才会出现(当然,在单元测试没有发生的情况下)。我知道有可能做一些类似的事情

var element = angular.element(...[some html]...);
$compile(element)($scope);
但这对我来说并不是一个好的解决方案

有没有办法将控制器与html解耦,这样我就不必像上面描述的那样模拟它


提前谢谢

如果我正确地理解了您的问题,
您可以尝试在焦点不在形式的情况下实现此功能

<form name="testForm" ... ... ng-blur="func()">
<input type="text" name="Field" />
</form
您可以直接在ngBlur中使用expresion

ng-blur="focus=false"
ng-blur="focus=false"