我想在注册时将图片上传到firebase,并且我想在更新我的会员资料时添加图片网址。
上传图片后,当生成下载URL时,它会使用$ broadcast或$ emit注册事件,在更新成员个人资料时检测事件,并尝试传递文件URL。
如果$ emit或$ broadcast在工厂中是'undefined',如果你使用$ apply,$ apply将是'undefined'。
我想知道原因和解决方案。
工厂代码
app.factory('imageUpload', [function($rootScope){
return {
exec: function(event,targetObj){
// image file check
.....
return { file: file, fileCheck: true };
},
serv: function(event, childPath){
// firebase file upload
.....
$rootScope.$apply(function() {
$rootScope.$emit('UPLOAD_EVENT_URL', downloadURL);
});
return downloadURL; //imageUpload.serv return
}
};
}]); // end imageUpload
控制器代码
app.controller('userSignUp', ['$scope', 'dialogAlert', 'imageUpload', '$location', function($scope, dialogAlert, imageUpload, $location){
// init code
.....
// signup
$scope.signUp = function(){
//firebase signup & user update
firebase.auth().createUserWithEmailAndPassword($scope.user.email, $scope.user.password).then(function(user) {
$scope.$on('UPLOAD_EVENT_URL', function (event, fileUrl) {
alert("On : "+fileUrl);
});
user.updateProfile({
displayName: $scope.user.penName,
photoURL: imgUrl
}).then(function() {
// member update code
.....
}, function(error) {
// error msg code
.....
});
}, function(error) {
// Handle Errors here.
.....
});
}
}]);