Первый: Here is a plunk.AngularJS: Передача данных с контроллера на обслуживание
В настоящее время я пытаюсь создать базовое приложение для регистрации с помощью AngularJS, размещенного на сайте SharePoint. Я потянув текущие пользовательские данные с завода примерно так:
app.factory('Data', function ($http, $log) {
return {
getCurrentUser: function (complete, failure) {
jQuery.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/currentUser",
type: "GET",
dataType: "json",
headers: {
"Accept": "application/json;odata=verbose"
},
success: function (data) {
complete(data.d);
},
error: function (data) {
failure(data);
}
});
}
Затем я использую контроллер для назначения результатов (в этом случае пользователь Title) на значение:
app.controller('IndexCtrl', function ($scope, Data) {
Data.getCurrentUser(function (user) {
CurrentUser = user.Title;
});
Теперь, проблема, которую я испытываю, заключается в том, что значение CurrentUser
не может использоваться во всех частях завода. Сейчас все на одном заводе и на одном контроллере. Таким образом, я могу использовать CurrentUser
, чтобы создать новое назначение так:
app.factory('Data', function ($http, $log) {
return {
updateAppointment: function (appointment) {
var Title = appointment.Title;
var Appointment = appointment.Appointment;
var CurrentSpots = appointment.Openings;
var Id = appointment.Id;
// Create new Reservations list item
jQuery.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle('SharePointList')/Items",
type: "POST",
data: JSON.stringify({
"__metadata": { type: "SP.Data.SharePointListItem" },
Title: Title,
Appointment: Appointment,
Colleague: CurrentUser,
AppointmentId: Id
}),
headers: {
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
},
success: function (data, textStatus, jqXHR) {
},
failure: function (jqXHR, textStatus, errorThrown) {
var response = JSON.parse(jqXHR.responseText);
var message = response ? response.error.message.value : textStatus;
alert("Error: " + message);
}
});
Но я не могу использовать его, когда я пытаюсь сделать запрос, в том числе CurrentUser
значение в чем-то вроде этого:
app.factory('Data', function ($http, $log) {
return {
getCurrentAppointment: function (successCallback) {
$http({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/getByTitle('SharePointList')/Items?$filter=User eq '" + CurrentUser + "'",
method: "GET",
dataType: "json",
async: "true",
headers: {
"Accept": "application/json;odata=verbose"
}
})
.success(function (data, status, headers, config) {
successCallback(data.d.results);
})
.error(function (data, status, headers, config) {
$log.warn(data, status, headers, config);
});
}
Независимо от того, что я пробовал, он постоянно дает мне undefined
возврат для этого значения CurrentUser. Любая помощь будет оценена по достоинству. Заранее спасибо!
Где находится CurrentUser? И почему вы создаете 2 фабрики под названием Data? –
На самом деле я просто разместил полный контекст, чтобы помочь визуализировать структуру, но я понимаю, что, возможно, это было более запутанно. Все они находятся под одной большой фабрикой. Я опубликую плунж, поскольку, по-моему, фрагменты, возможно, принесли больше вреда, чем пользы. – TheHouseplant