AngularJS 오류:오류 유형: v2.login이 함수가 아닙니다.
로그인 버튼을 클릭하면 로그인 기능을 호출하고 싶은데 제목에 오류 메시지가 계속 뜨네요.누가 내 대본의 오류를 지적해 줄 수 있습니까?
login.js 코드 아래:
/*global Firebase, angular, console*/
'use strict';
// Create a new app with the AngularFire module
var app = angular.module("runsheetApp");
app.controller("AuthCtrl", function ($scope, $firebaseAuth) {
var ref = new Firebase("https://xxxxx.firebaseio.com");
function login() {
ref.authWithPassword({
email : "xxxxx",
password : "xxxx"
}, function (error, authData) {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with payload:", authData);
}
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
그리고 login.html의 코드도 아래와 같습니다.
<div class="container" style="max-width: 300px">
<form class="form-signin">
<h2 class="form-signin-heading" style="text-align: center">Please Sign In</h2>
<input type="text" class="form-control" name="username" ng-model = "username" placeholder="Email Address" required="" autofocus="" />
</br>
<input type="password" class="form-control" name="password" ng-model = "password" placeholder="Password" required=""/>
</br>
<button class="btn btn-lg btn-primary btn-block" type="submit" ng-click="login()">Login</button>
</form>
</div>
엣지 케이스는 여기 있습니다만, 포스터 때문에 말씀드리고 싶습니다.으로 컨트롤러 As를을 사용할 때 가 발생했습니다.name
와 같은 ng-submit
를 들어 예를 들어,
<form name="authCtrl.signUp" ng-submit="authCtrl.signUp()">
Throws: TypeError: v2.signUp이 함수가 아닙니다.
해결책은 양식의 이름을 다른 것으로 바꾸는 것이었습니다.
<form name="authCtrl.signUpForm" ng-submit="authCtrl.signUp()">
저 같은 경우에는 당신과 똑같은 문제가 있었습니다.하지만 그런 시나리오에 대한 gkalpak의 대답을 우연히 접한 것이 도움이 되었습니다.
알고 보니 제가 부르던 것이 addBuddy() 함수였는데, 이 함수는 "addBuddy"라는 이름의 형태였습니다.해결책은 두 가지 중 하나의 이름을 바꾸어 하나를 돋보이게 하거나 다른 것과 차별화할 수 있도록 하는 것이었습니다.폼의 이름을 "add BuddyForm"과 voila로 변경했습니다!내 기능이 통했어요!
다음은 제 사례의 일부분입니다.
<form name="addBuddy" class="form-horizontal" novalidate>
...
<button class="btn btn-sm btn-info" ng-click="addBuddy()>Submit</button>
전 다음으로 바꿨습니다.
<form name="addBuddyForm" class="form-horizontal" novalidate>
...
<button class="btn btn-sm btn-info" ng-click="addBuddy()>Submit</button>
...잘 됐어요! :)
각도에 있음JS는 $scope 내에 있어야 하는 뷰 함수를 호출합니다.
JS
// exposes login function in scope
$scope.login = login;
HTML
<div class="container" ng-controller="AuthCtrl" style="max-width: 300px"> <!-- I notice here for include ng-controller to your main div -->
<form class="form-signin">
<h2 class="form-signin-heading" style="text-align: center">Please Sign In</h2>
<input type="text" class="form-control" name="username" ng-model = "username" placeholder="Email Address" required="" autofocus="" />
</br>
<input type="password" class="form-control" name="password" ng-model = "password" placeholder="Password" required=""/>
</br>
<button class="btn btn-lg btn-primary btn-block" type="submit" ng-click="login()">Login</button>
</form>
이것은 당신의 문제와 관련된 것이 아닐 수도 있지만, 저도 이 오류가 발생하고 있었고 그 이유를 파악하는 데 시간이 조금 걸렸습니다.
함수와 변수의 이름을 모두 같게 지었는데, 함수에 변수가 할당되어 있었기 때문에 변수의 할당이 함수를 우선시하고 있었고 두 번째 실행에서 폭발적으로 증가했습니다.
예제에서 upploadFile() 기능이 uppload.upploadFile = true로 표시됩니다.이 파일은 uploading.upploadingFile - 스피너의 동작을 제어하기 위해 사용되는 플래그입니다.일단 그것이 고쳐지자, 그 문제는 사라졌습니다.
예:
(function()
{
'use strict';
angular.module('aumApp.file-upload')
.controller('FileUploadCtrl', FileUploadCtrl);
function FileUploadCtrl($scope, $http)
{
upload.uploadFile = function()
{
upload.uploadFile = true;
var backendUrl = '/ua_aumcore/events/api/v1/events/uploadFile';
var fd = new FormData();
fd.append('file', upload.src);
$http({ url: backendUrl, data: fd, method: 'POST', transformRequest : angular.identity, headers: { 'Content-Type' : undefined } })
.then(function uploadSuccess(response)
{
upload.data = response.data;
upload.message = "Uploaded Succesfully.";
upload.uploadSuccess = true;
upload.uploadingFile = false;
},
function uploadFailure(response)
{
upload.message = "Upload Failed.";
upload.uploadSuccess = false;
upload.uploadingFile = false;
});
};
}
FileUploadCtrl.$inject = ['$scope', '$http'];
})();
뷰에서 호출하려면 함수가 $scope에 있어야 합니다. 추가
$scope.login = login;
컨트롤러의 JS 코드로 이동합니다.
실제로 그 컨트롤러를 사용해야 합니다.바꾸다
<div class="container" style="max-width: 300px">
로.
<div ng-controller="AuthCtrl" class="container" style="max-width: 300px">
이것은 모두 기본적인 것입니다.제 조언은 Angular에서 배우라는 것입니다.더 나아가기 전에 JS 튜토리얼.
두 가지 방법을 사용하면 $scope에 로그인 기능을 할당할 수 있습니다.기능 코드를 다음과 같이 바꿉니다.
$scope.login=function() {
ref.authWithPassword({
email : "nick.koulias@gmail.com",
password : "Jaeger01"
}, function (error, authData) {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with payload:", authData);
}
});
}
제가 답변이 늦었을 수도 있습니다.하지만 저한테는 통합니다.
설정한 양식 이름을 확인합니다(예: ng-form=" login").
기능 이름(예: ng-click="login()")
그러면 작동하지 않습니다. ng-form="loginForm"과 같이 둘 중 하나를 변경해야 합니다.
설명:
AngularJS 1.x는 임의의 것을 등록합니다.form
가 있는 DOM 요소name
에 있는 재산.$scope
경유로formDirectiveFactory
. 이 지침은 자동으로 인스턴스화됩니다.form.FormController
위의 내용이 사실일 경우:
만약에
name
속성이 지정되고 폼 컨트롤러가 아래의 현재 범위에 게시됩니다.
보낸이: 각도.js:24855
그러므로 만약 당신이.<form name=myForm>
그것은 당신의 것을 무시할 것입니다.$scope.myForm = function() { ... }
저도 같은 오류 메시지가 있었습니다.저의 경우 실수로 컨트롤러에 함수와 같은 이름의 변수를 추가했습니다.그렇게 되면 이 오류도 발생합니다.
언급URL : https://stackoverflow.com/questions/32003458/angularjs-error-typeerror-v2-login-is-not-a-function
'programing' 카테고리의 다른 글
Excel, SSRS에서 텍스트로 출력된 번호 필드 (0) | 2023.10.14 |
---|---|
md-select는 선택한 값을 설정할 수 없습니다. (0) | 2023.10.14 |
트위터 부트스트랩 경고가 사라지거나 사라지거나 둘 다 사라질 수도 있습니까? (0) | 2023.10.09 |
Chrome 업데이트 후 커서가 모달 밖으로 해제되면 모달이 닫힙니다(angularjs 및 bootstrap-ui). (0) | 2023.10.09 |
8천만 개의 레코드가 있는 테이블에 인덱스를 추가하는 데 18시간 이상이 걸립니다.자 이제는 뭐죠? (0) | 2023.10.09 |