У меня проблема с моим сервисом в угловом режиме.Угловой сервис возврат не определено
Моя служба имеет следующий код:
app.service("Utilidades", ['$http', '$window', function ($http, $window) {
return {
Get: function (urlAbsoluta, parametros, callback) {
var Utilidades = this;
$http
.get(app.UrlBase + urlAbsoluta, parametros)
.then(function (data) {
var Datos = angular.fromJson(data);
Utilidades.GuardarToken(Datos.Token);
callback(Datos);
});
},
ObtenerMenu: function() {
var Utilidades = this;
Utilidades.Get("Administracion/Api/Usuarios/Menu", {}, function (Datos) {
Datos = angular.fromJson(Datos.data);
if (Datos.Error == "") {
return Datos.Resultado;
} else {
return "";
}
});
}
}
}]);
Затем в моем контроллере у меня есть следующий код:
app.controller('LoginCtrl', ['$scope', '$http', '$location', 'Utilidades',
function Iniciador($scope, $http, $location, Utilidades) {
var Li = this;
Li.Usuario = "";
Li.Contrasena = "";
Li.Error = "";
Li.MenuItems = [];
Li.Menu = function() {
Li. MenuItems = Utilidades.ObtenerMenu();
}
}]
);
Когда я запускаю это, Li.MenuItems имеет неопределенное значение, и я не Не знаю почему.
Вы пропускаете ',' после 'возвращение вашего сервиса { ...} ' – Aaron
Это происходит потому, что вы выполняете« возврат »для« function (Datos) {» не для« ObtenerMenu: function() {". Вы хорошо поняли эту известную проблему с обратным вызовом в своей функции Get. Я не могу предложить какое-либо решение, потому что я его не знаю, соглашусь на синхронный аякс, что неприемлемо. – Amit
Есть ли из-за пространства после Ли.? "Ли. MenuItems = Utilidades.ObtenerMenu();" –