У меня есть угловая директива (1.4). Я перехожу к синтаксису компонента (1.5). Существующий код вызывает форму. $ SetPristine(), если нажата кнопка сброса формы. Когда я переключаю его на компонент и пытаюсь вызвать из теста жасмина, переменная формы не определена.
ctrl.resetForm = function () {
ctrl.employee = {};
ctrl.myForm.$setPristine();
};
Тестовый файл:
$scope = $rootScope.$new();
$scope.myForm = jasmine.createSpyObj('myForm', ['$setPristine']);
ctrl = _$componentController_(
'myComponent', {
$scope: $scope,
EmployeeSvc: EmployeeSvc,
LoggingSvc: LoggingSvc,
SessionSvc: SessionSvc
});
ctrl.$onInit();
form.html
<form name="myForm" class="form" novalidate>
Ошибка:
debug.html:38 TypeError: Cannot read property '$setPristine' of undefined
Установите шпион на компонентный контроллер после его инициализации. $ scope не нужно передавать.
ctrl = _$componentController_(
'sbEmployeeCreate', {
EmployeeSvc: EmployeeSvc,
LoggingSvc: LoggingSvc,
SessionSvc: SessionSvc
});
ctrl.$onInit();
ctrl.myForm = jasmine.createSpyObj('myForm', ['$setPristine']);
В шаблоне используйте $ ctrl для имени формы.
<form name='$ctrl.myForm'>
ctrl.myForm = {}