gpt4 book ai didi

javascript - AngularJS - 函数未定义

转载 作者:行者123 更新时间:2023-11-28 05:14:18 25 4
gpt4 key购买 nike

通过下面的代码,我尝试在 Firebase 函数中使用 AngularJS 来显示 toast。该函数是 showToast() 但我收到函数未定义错误。任何帮助将不胜感激,谢谢!

功能:

app.controller('PageCtrl', function($scope, $mdToast, $document) {
function showToast() {
$mdToast.show(
$mdToast.simple()
.textContent('Simple lala Toast!')
.hideDelay(3000)
);
};
});

尝试调用函数:

function signInUser(email, password) {
var email = document.getElementById('email-input').value;
var password = document.getElementById('password-input').value;

auth.signInWithEmailAndPassword(email, password).then(function(value) {
// REDIRECT TO THE HOME PAGE AFTER LOGIN
//window.location = "#/home";
//location.reload();

showToast();

}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;

if (errorCode == 'auth/invalid-email') {
alert('That user does not exist.');
} else {
alert(errorMessage);
}
console.log(error);
});
}

完整脚本:

/*

INITIALIZATION

*/

// FIREBASE CONFIGURATION
var config = {
apiKey: "AIzaSyA2_fVDRCKhCJ5QueXY-Xb2CxFFuxY-rdU",
authDomain: "user-database-d1a70.firebaseapp.com",
databaseURL: "https://user-database-d1a70.firebaseio.com",
storageBucket: "user-database-d1a70.appspot.com",
messagingSenderId: "528331985076"
};

// INITIALIZE FIREBASE
firebase.initializeApp(config);
var database = firebase.database();
var auth = firebase.auth();

// ANGULARJS APPLICATION
var app = angular.module('FirebaseTest', [
'ngRoute', 'ngMaterial', 'ngMessages'
]);

/*

ROUTES

*/

app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/home", {templateUrl: "partials/home.html", controller: "PageCtrl"})
.when("/about", {templateUrl: "partials/about.html", controller: "PageCtrl"})
.when("/faq", {templateUrl: "partials/faq.html", controller: "PageCtrl"})
.when("/nutrition", {templateUrl: "partials/nutrition.html", controller: "PageCtrl"})
.when("/login", {templateUrl: "partials/login.html", controller: "PageCtrl"})
.when("/register", {templateUrl: "partials/register.html", controller: "PageCtrl"})
.otherwise({redirectTo:"/home", template: "partials/home.html", controller: "PageCtrl"});
}]);

/*

CONTROLLERS

*/

app.controller('PageCtrl', function($scope) {

});

app.controller('NavCtrl', function($scope) {
var url = document.URL;
var array = url.split('/');
var pathname = array[array.length-1];

console.log("Pathname: "+pathname);
$scope.currentNavItem = pathname;
});

app.controller('NutritionCtrl', function($scope) {
$scope.user = {
gender: 'Female',
goal: 'Lose Weight'
};

$scope.genders = ('Male Female').split(' ').map(function(gender) {
return {abbrev: gender};
});
$scope.goals = ('Lose Weight_Gain Weight').split('_').map(function(goal) {
return {abbrev: goal};
});
});

app.controller('PageCtrl', function($scope, $mdToast, $document) {
function showToast() {
$mdToast.show(
$mdToast.simple()
.textContent('Simple lala Toast!')
.hideDelay(3000)
);
};
});

/*

METHODS

*/

// FIREBASE CREATE USER METHOD
function writeUserData(email, password) {
auth.createUserWithEmailAndPassword(email, password)
.then(function () {

})
.catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;

if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
alert(errorMessage);
}
console.log(error);
});
}

// FIREBASE SIGN IN USER METHOD
function signInUser(email, password) {
var email = document.getElementById('email-input').value;
var password = document.getElementById('password-input').value;

auth.signInWithEmailAndPassword(email, password).then(function(value) {
// REDIRECT TO THE HOME PAGE AFTER LOGIN
//window.location = "#/home";
//location.reload();

showToast();

}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;

if (errorCode == 'auth/invalid-email') {
alert('That user does not exist.');
} else {
alert(errorMessage);
}
console.log(error);
});
}

// FIREBASE SIGN OUT USER METHID
function signOutUser() {
auth.signOut().then(function() {
// REDIRECT TO THE HOME PAGE AFTER LOGOUT
window.location = "#/home";
location.reload();
}, function(error) {
// Errors go here.
});
}

// FIREBASE AUTH STATE CHANGE METHOD
auth.onAuthStateChanged(function(user) {
// NAVIGATION LINKS
var nutritionLink = document.getElementById('nav-nutrition');

// USER INFORMATION
var user = firebase.auth().currentUser;

if (user) {
email = user.email;
uid = user.uid;

// HIDE/SHOW LINKS
$(nutritionLink).show();

// UPDATE HEADER TEXT WITH USER EMAIL
document.getElementById('header-username').innerHTML="Logged in as " + email + " - <a href='#' onclick='return signOutUser(this);'>Sign Out</a>";

console.log("Provider-specific UID: "+uid);
console.log("Email: "+email);
} else {

// HIDE/SHOW LINKS
$(nutritionLink).hide();

// UPDATE HEADER TEXT WITH USER EMAIL
document.getElementById('header-username').innerHTML="<a href='#/login'>Login/Register</a>";
}
});

/*

FUNCTIONS

*/

最佳答案

你可以这样做:

JS

app.controller('PageCtrl', function($scope, $mdToast, $document) {
function showToast() {
$mdToast.show(
$mdToast.simple()
.textContent('Simple lala Toast!')
.hideDelay(3000)
);
};

// FIREBASE SIGN IN USER METHOD
$scope.signInUser = function () {
var email = document.getElementById('email-input').value;
var password = document.getElementById('password-input').value;

auth.signInWithEmailAndPassword(email, password).then(function(value) {
// REDIRECT TO THE HOME PAGE AFTER LOGIN
//window.location = "#/home";
//location.reload();

showToast();

}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;

if (errorCode == 'auth/invalid-email') {
alert('That user does not exist.');
} else {
alert(errorMessage);
}
console.log(error);
});
}
});

标记

<buttton ng-click="signInUser()">Sign In</button>

您无需输入电子邮件和密码,因为您可以在该函数中获取它们。

编辑:您应该重新考虑您的整个方法,因为您没有以最佳方式使用 AngularJS。例如,做这样的事情:

<input type="email" ng-model="email">

并在您的 Controller 中使用$scope.email而不是

var email = document.getElementById('email-input').value;

关于javascript - AngularJS - 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41108608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com