recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - angulairejs comment utiliser le service dans le contrôleur

Code service :

app.service('getTicketList', function($q, $http){
    this.data = {};
    this.getData = function(id){
        var deferred = $q.defer();
        var path='ticket.action?method:projectTickets';
        if(id)
            path+='&projectId='+id.toString();
        $http.get(path).then(function(d){
            //success
            this.data = d;
            deferred.resolve(d);
        },function(){
            //failure
            deferred.reject(d);
        });
    }
});

code du contrôleur :

app.controller('projectController', function($scope,getTicketList) {
    $scope.tickets=getTicketList.getData($scope.projectId).data.tickets;
});

Il y a un problème avec le code du contrôleur. Je ne parviens pas à obtenir les données en utilisant getTicketList.data, c'est {}. Et je ne sais pas comment transmettre les paramètres. . . .

ringa_leeringa_lee2776 Il y a quelques jours759

répondre à tous(3)je répondrai

  • 巴扎黑

    巴扎黑2017-05-15 16:52:58

    1. Utilisez le retour au lieu de cela dans le service

    javascriptapp.service('getTicketList', function ($q, $http) {
      var data = {};
      return {
        getData: function (id) {
          var deferred = $q.defer();
          var path = 'ticket.action?method:projectTickets';
          if (id)
            path += '&projectId=' + id.toString();
          var promise = $http.get(path).then(function (response) {
              return response;
          }, function (response) {
              return response
          });
          return promise;
        }
      }
    });
    

    2. Utilisez le mode promesse lorsque vous appelez

    javascriptgetTicketList.getData($scope.projectId).then(
      function (res) {
        $scope.tickets = res.tickets
      }, 
      function (rej) {
      // error handler
      }
    );
    

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-15 16:52:58

    Cette façon de passer les paramètres est erronée. Je ne l'ai jamais utilisée comme ça. Il y a un projet ici Trouvez le contrôleur.service correspondant et jetez un œil
    https://github.com/LittleDouBi/community<. 🎜>

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 16:52:58

    Vous devez utiliser le mode promesse :

    app.service('getTicketList', function ($q, $http) {
      this.data = {};
      this.getData = function (id) {
        var deferred = $q.defer();
        var path = 'ticket.action?method:projectTickets';
        if (id) {
          path += '&projectId=' + id.toString();
        }
        return $http.get(path).then(function (d) {
          this.data = d;
          return $q.when(d);
        }, function (d) {
          return $q.reject(d);
        });
      }
    });
    
    app.controller('projectController', function ($scope, getTicketList) {
      getTicketList.getData($scope.projectId).then(function (res) {
        $scope.tickets = res.tickets
      }, function (rej) {
        // error handler
      });
    });
    

    répondre
    0
  • Annulerrépondre