我正在尝试调试我的代码:我有简单的服务'密码重置'在这里:
(function () {
'use strict';
angular
.module('app.login')
.factory('ResetPasswordService', ResetPasswordService);
function ResetPasswordService($http, $q) {
function sendMessage() {
var there = this;
var deferred = $q.defer();
var data = {
email: this.email
};
$http({
method: 'POST',
url: 'password/email',
data: data
})
.then(_loginSuccess, _loginFailed);
function _loginSuccess(response) {
console.log(response);
deferred.resolve(there);
}
function _loginFailed(response) {
deferred.reject('Une erreur interne est survenue' + response.error);
}
return deferred.promise;
}
return sendMessage;
}
})();
我正在尝试在我的控制器中使用它,当用户点击“是”' (onTap事件 - 确认密码重置)
(function () {
'use strict';
angular
.module('app.login')
.controller('LoginCtrl', LoginCtrl);
function LoginCtrl(UserModel, $ionicPopup, $scope, ResetPasswordService) {
var vm = this;
vm.user = UserModel.buildUser();
vm.login = login;
vm.forgotPassword = forgotPassword;
/**
* function called when user clicks on 'mot de passe oublié' button
* @function
* @name forgotPassword
* @memberOf App.Login.LoginCtrl
*/
function forgotPassword() {
vm.data = {
email : vm.user.email
};
var myPopup = $ionicPopup.show({
template: '<input type="email" ng-model="vm.data.email" placeholder="Entrez votre adresse email">',
title: 'Mot de passe oublié',
subTitle: 'Souhaitez vous réinitialiser' + ' <br> ' + 'votre mot de passe ?',
scope: $scope,
buttons: [
{text: 'Non'},
{
text: '<b>Oui</b>',
type: 'button-positive',
onTap: function (e) {
if (!vm.data.email) {
//don't allow the user to close unless he enters his email
e.preventDefault();
console.log('Le champs est vide ! ');
} else {
/!\ HERE /!\ ResetPasswordService.sendMessage() /!\ HERE /!\
.then(_success, _fail);
return vm.data.email;
}
}
}
]
});
myPopup.then(function (res) {
if (res) {
console.log('Tapped!', res);
}
else {
console.log('annulation');
}
});
}
}
})();
但接着我告诉我那个消息
ResetPasswordService.sendMessage
不是一个功能。
但 是 ,我已经注入了匹配的工厂。我还是JS的新手,这不是我第一次看到这个消息,但我现在无法弄明白......我又做错了什么?
答案 0 :(得分:3)
从你的工厂,你应该回来
return {
sendMessage: sendMessage
}
目前,ResetPasswordService
本身就是ResetPasswordService.sendMessage