2015-01-23 2 views
0

В моем угловом контроллере мне нужно сбросить некоторые поля формы до нуля в определенный момент (когда какое-то другое поле изменяется). Код выглядит примерно так ...

$scope.fieldCallback = function() { 
    $scope.data.Field = undefined; 
    $scope.form.field.$setPristine(); 
} 

это, конечно, вызывает проблемы, когда я запускаю юнит-тесты, потому что form.field будет только там, если вы на самом деле разобрать документ (который, конечно, в случае модульных тестов не происходит). Я знаю, что можно что-то сделать по строкам

var element = angular.element(...[some html]...); 
$compile(element)($scope); 

но это действительно не очень хорошее решение для меня.

Есть ли способ отделить контроллер от html, поэтому мне не нужно издеваться над этим, как описано выше?

Thx заранее!

ответ

0

Если я правильно получаю ваш вопрос,
вы могли бы попробовать реализовать это пока фокус из формы

<form name="testForm" ... ... ng-blur="func()"> 
<input type="text" name="Field" /> 
</form 

и в JS файл

$scope.func = function(){ 
    $scope.testForm.Field.$setPristine(); 
} 

вы можете drirectly использовать expresion в ngBlur

ng-blur="focus=false" 
Смежные вопросы