从服务

时间:2015-11-04 17:08:40

标签: angularjs

我正在尝试将从服务中获取的数据遍历到我的控制器中的范围,但我无法完成最后一步(我认为)。我添加了一些步骤,看看是否可能在服务的实际请求之前将数据插入范围,但事实并非如此。

步骤1:激活控制器中的addMovie功能。 第2步:我创建一个空的movieListID范围。

$scope.addMovie = function() {

  console.log ('Step 1: start addMovie function in controller')
  console.log ('Step 2: create empty movieListID scope')
  $scope.movieListID = {};
  console.log ($scope.movieListID)

  movieAdd.add()
    .then(function(response){
      $scope.movieListID = response;
      console.log ('Step 4: Succes inserting data into scope' + $scope.movieListID)
    })
    .catch(function(response) {
      console.log ('No search reposone')
    });
}

第3步:从服务中获取数据。

(function(){
  "use strict";

  angular.module('addMovieseat')

  .factory('movieAdd',

    function($http, $q){
      return{
        add: function(){
          var deferred = $q.defer();

          'http://api.themoviedb.org/3/movie/206647?api_key=a8f7039633f2065942cd8a28d7cadad4&append_to_response=releases'
          // Search for release dates using the ID.
          var base = 'http://api.themoviedb.org/3/movie/';
          var movieID = $(event.currentTarget).parent().find('.movieID').text()
          var apiKey = 'a8f7039633f2065942cd8a28d7cadad4&query='
          var append_to_response = '&append_to_response=releases'
          var callback = 'JSON_CALLBACK'; // provided by angular.js
          var url = base + movieID + '?api_key=' + apiKey + append_to_response + '&callback=' + callback;

          $http.jsonp(url,{ cache: true}).
            success(function(data, status, headers, config) {

              if (status == 200) {

                deferred.resolve(data.results);
                console.log ('Step 3: Succes getting data')

              } else {
                console.error('Error happened while getting the movie list.')
              }

            }).
            error(function (data, status, headers, config) {
              console.error('Error happened while getting the movie list.')
              deferred.resolve(false);
            });

            $(".search_results").fadeOut(250);

            return deferred.promise;
        }
      }
    })

})();

第4步:

movieAdd.add()
  .then(function(response){
    $scope.movieListID = response;
    console.log ('Step 4: Succes inserting data into scope' + $scope.movieListID)

但是当我到达第4步时,我在控制台日志中返回了一个“未定义”,它引用了$scope.movieListID

此外,如果我检查Chrome中的网络标签,我会看到json请求已完成。所以数据在服务内部。但是将其纳入范围是行不通的。

0 个答案:

没有答案