所以我有一个最终用户,他们正在全局div上提交一个表单,并带有一个打开弹出窗口的按钮。
长话短说,他们填写此表单并使用Angular RESTing方法提交HTTP方法。
我正在试图弄清楚如何从用户访问弹出窗口中获取用户当前的URL,或者从中提交。
我想将该URL放在SQL数据库中,以了解用户在哪里发现错误或从哪里点击此按钮(弹出窗口的目的是获取信息并收到反馈)
正确的方法是什么?
$windows.location?
$Location?
$routeparams?
我真的需要一些帮助。我将在下面发布我的客户端角度,接收这些请求并将其放入SQL数据库的后端由我的C#Controller完成。
(function() {
'use strict';
var commonModule = angular.module('ambassadors.commonModule');
commonModule.service('commonService', ['$http', '$q', function($http, $q) {
this.getSettingsView = function() {
var deferred = $q.defer();
$http.get('/api/settings')
.success(function(response) {
deferred.resolve(response);
})
.error(function() {
deferred.reject();
});
return deferred.promise;
};
this.getUserClaims = function() {
var deferred = $q.defer();
$http.get('/api/profile')
.success(function(response) {
deferred.resolve(response);
})
.error(function(response) {
deferred.reject(response);
});
return deferred.promise;
};
this.submitFeedback = function(feedback, file) {
var deferred = $q.defer();
if (file != null) {
var that = this;
this.uploadFile(file).then(
// Success Handler
function(result) {
// update the scec icon in the controller
feedback.FeedbackUpload = result[0].location;
that.postFeedback(feedback, deferred);
},
// Failure Handler
function() {
$scope.messageInfo = "Error uploading feedback file";
return deferred.reject;
});
} else
this.postFeedback(feedback, deferred);
return deferred.promise;
};
this.postFeedback = function(feedback, deferred) {
$http.post('/api/feedback', feedback)
.success(function() {
deferred.resolve();
})
.error(function() {
deferred.reject();
});
}
this.uploadFile = function(file) {
// As per stackoverflow.com/questions/…
// uncorkedstudios.com/blog/…
var feedbackFileFormData = new FormData();
feedbackFileFormData.append("file", file);
var deferred = $q.defer();
$http.post('/api/feedbackfile', feedbackFileFormData, {
withCredentials: true,
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity
})
.success(function(response) {
deferred.resolve(response);
})
.error(function() {
deferred.reject();
});
return deferred.promise;
};
}]);
})();
答案 0 :(得分:1)
在控制器中注入$location服务,然后使用
$ location服务解析浏览器地址栏中的URL(基于 在window.location上)并使URL可用于您的 应用。地址栏中URL的更改将反映到 $ location服务和$ location的更改都会反映到 浏览器地址栏。
var absUrl = $location.absUrl();
// => "http://example.com/#/some/path?foo=bar&baz=xoxo"