Respuesta de http.get en Scope

Estoy escribiendo un controlador en AngularJS que hace un llamado por http.get a una API, y devuelve un 0 (por ahora). Logro mostrar el 0 por consola sin problemas, pero no puedo mostrarlo en un $scope en el front.

App.js

   .controller('ssnGenAltaCtrl', ['$scope', '$http',
    function($scope, $http){
        $scope.data = {};
        $scope.generarRubricaAlta = function(data){
        $http({
            method: 'GET',
            url: 'url'
            }).then(function successCallback(data) {
                console.log(data.data);
                $scope.data.mensaje = data.data;
            }, function errorCallback(data) {
                console.log("Error");
            });
        }
    }]);

HTML

<div>
    <a class="btn btn-default" href="#" role="button" ng-click="generarRubricaAlta()">Generar Rubrica Alta</a>
    <p class="bg-primary">{{data.mensaje}}</p>
</div>

Ruteo

.when("/ssnGenAlta", {
    templateUrl : "views/ssnGenAlta.html",
    controller: "ssnGenAltaCtrl"
})

El controller lo tengo declarado en el ruteo. No me está dando ningún error ahora mismo por consola, pero al hacer click en el botón me muestra el 0 devuelto por consola pero no en el front.

2
задан 30.12.2016, 16:23
0 ответов

Возможно, что эти два соединения ты помогают (тот же Веб):

https://toddmotto.com/digging-into-angulars-controller-as-syntax/#controllers-as-classe

и

https://toddmotto.com/digging-into-angulars-controller-as-syntax/#nested-scopes

Если оно ты не функционирует, у меня есть другие два выбора, более плотный каждый.

Выбор 1:

Производить переменную, войдя в драйвер

angular.module('aplicativo').controller('MainCtrl', function ()
{
    var main = this;
    ...

и использовать эту переменную как scope

$http({
   method  : 'POST',
   url     : 'url',
   data    : 'data'
})
.success(function(data){
     main.user = 'Pepito';
 })
 .error(function() {
     console.error('ERROR!');
  });

и в виде:

    <div>{{main.user}}</div>

Выбор 2:

В ответе AJAX, функции callback, немного как:

функция в драйвере:

$scope.getAct(
    function (data) {
          console.log(data)
    }
);

функция вызова AJAX:

$scope.getAct = function(functionCallback)
{

   $http({
      method  : 'POST',
      url     : 'url',
      data    : 'data'
   })
   .success(function(data){
        functionCallback(data);
   })
   .error(function() {
        console.error('ERROR!');
   });
0
ответ дан 03.12.2019, 17:55