Domanda

Credo che Angular stia caricando la pagina prima che riceve tutte le informazioni da JSONP.Se aggiorno la pagina un paio di volte, prendo le informazioni da visualizzare;Tuttavia, non è costante.Il mio codice è quasi lo stesso del codice che sto usando sulla pagina dei miei progetti che non ha lo stesso problema.

HTML:

<div class="container">
    <div class="row push-top" ng-show="user">
      <div class="col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1">
        <div class="well well-sm">
          <div class="row">
            <div class="col-sm-3 col-md-2">
              <img ng-src="[[ user.images.138 ]]" alt="" class="img-rounded img-responsive" />
            </div>
            <div class="col-sm-7 col-md-8">
              <h4 ng-bind="user.display_name"></h4>
              <h5 ng-bind="user.occupation"></h5>

              <i class="fa fa-map-marker"></i>
              <cite title="[[ user.city ]], [[ user.country ]]">[[ user.city ]], [[ user.country ]]</cite>
              <br>
              <strong ng-bind="user.stats.followers"></strong> Followers, <strong ng-bind="user.stats.following"></strong> Following

              <hr>

              <p style="margin-top:10px;" ng-bind="user.sections['About Me']"></p>

            </div>
          </div>
        </div>
      </div>
    </div>
</div>
.

Javascipt:

'use strict';

angular.module('angularApp')
  .controller('AboutCtrl', function ($scope, $window, Behance) {
    $scope.loading = true;
    Behance.getUser('zachjanice').then(function (user) {
      $scope.user = user;
      $scope.loading = false;
    }, function (error) {
      console.log(error);
      $scope.loading = false;
      $scope.user = null;
    });

    $scope.gotoUrl = function (url) {
      $window.location.href = url;
    };
  });
.

Puoi vedere la pagina in questione a: http://zachjanice.com/index.html#/ circa .Grazie in anticipo.

Come richiesto qui è il servizio Esiti:

'use strict';

angular.module('angularApp')
  .factory('Behance', function ($http, $q, localStorageService, BEHANCE_CLIENT_ID) {

    // Should be called to refresh data (for testing purposes)
    // localStorageService.clearAll();

    // Public API
    return {

      // Get a list of projects
      getProjects: function (config) {
        var pageNum = 1;
        if (angular.isObject(config) && angular.isDefined(config.page)) {
          pageNum = config.page;
        }

        var _projects = $q.defer(),
            _storedProjects = localStorageService.get('Projects_Page_');

        if (_storedProjects !== null) {
          _projects.resolve(_storedProjects);
        } else {
          $http.jsonp('https://www.behance.net/v2/users/zachjanice/projects', {
            params: {
              'client_id': BEHANCE_CLIENT_ID,
              'callback': 'JSON_CALLBACK',
              'page': pageNum
            }
          })
          .then(function (response) {
            if (response.data.http_code === 200 && response.data.projects.length > 0) {
              // console.log('getting page', _page);
              _projects.resolve(response.data.projects);
              localStorageService.add('Projects_Page_' + pageNum, response.data.projects);
            }
          });
        }

        return _projects.promise;
      },

      // Get project with id
      getProject: function (id) {

        var _project = $q.defer();

        $http.jsonp('https://www.behance.net/v2/projects/' + id, {
          params: {
            'client_id': BEHANCE_CLIENT_ID,
            'callback': 'JSON_CALLBACK'
          },
          cache: true
        }).success(function (data){
          _project.resolve(data.project);
        });

        return _project.promise;
      },

      // Get project with id
      getUser: function (username) {

        var _user = $q.defer();

        $http.jsonp('https://www.behance.net/v2/users/' + username, {
          params: {
            'client_id': BEHANCE_CLIENT_ID,
            'callback': 'JSON_CALLBACK'
          },
          cache: true
        }).success(function (data){
          _user.resolve(data.user);
        });

        return _user.promise;
      }
    };
  });
.

È stato utile?

Soluzione

Anthony Chu non ha fornito supporto, quindi ho trovato la risposta da solo.La questione non era il servizio di visitare, ma il controller dei progetti come avevo originariamente affermato.

Ho cambiato $ ambito.loading sotto la chiamata per il servizio da FALSE a TRUE.Funziona ogni volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top