2016-07-21 5 views
0

각도 지시어 (1.4)를 사용했습니다. 구성 요소 구문 (1.5)으로 전환했습니다. 기존 코드는 폼 재설정 버튼이 클릭되면 $ setPristine() 양식을 호출합니다. 구성 요소로 전환하고 jasmine 테스트에서 호출하려고하면 양식 변수가 정의되지 않습니다.각도가 1.5 인 Referencing Angular form

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 
+0

템플릿 코드는 무엇입니까? 'ctrl.myForm = {} '와 같은 형식을 초기화하려고 시도 했습니까? –

+0

무언가를 제공 할 수 있다면 plunker가 도움이 될 것입니다. –

답변

0

가 초기화 된 후 구성 요소 컨트롤러의 스파이를 설정합니다. $ scope를 전달할 필요가 없습니다.

ctrl = _$componentController_(
'sbEmployeeCreate', { 
    EmployeeSvc: EmployeeSvc, 
    LoggingSvc: LoggingSvc, 
    SessionSvc: SessionSvc 
}); 
ctrl.$onInit(); 
ctrl.myForm = jasmine.createSpyObj('myForm', ['$setPristine']); 

템플릿에서 양식 이름으로 $ ctrl을 사용하십시오.

<form name='$ctrl.myForm'>