2015-11-24 41 views
0

我正在開發AngularJS應用程序。在最初構建基本應用程序後,我已經轉向角度路由。我已經成功實現了路由。我以前的頁面數據來自我使用$routeParams進行路由的頁面。

我的控制器內部我打電話給$ http服務,輸入從$routeParams服務收到。我所有的REST API和鉻的網絡選項卡我看到響應回來,但我的http服務的成功處理程序不叫。嘗試調試,但斷點永遠不會到達。

這裏是我的路由配置:

var app = angular.module('mainApp',['ngRoute']); 
app.config(function($routeProvider){ 
    $routeProvider.when('/',{ 
     templateUrl:"main.html", 
     controller:'CategoriesController' 
    }).when('/imagedetails/:imageId',{ 
     templateUrl: 'imagedetails.html', 
     controller:'ImageDetailsController' 
    }) 
    .otherwise({redirectTo:'/'}); 

}); 

所以我通過imageId到ImageDetailsController從REST API獲取數據。

這裏是我的控制器:

var ImageDetailsController = function($scope, $http, $routeParams) 
    { 
     $scope.imageId = $routeParams.imageId; 
     console.log("Print image id : " + $scope.imageId); 
     $scope.image = {}; 
     $scope.params = $routeParams; 

     var downloadImageRequest = { 
       method: 'GET', 
       url: '<my-rest-api-url>', 
       headers: { 
        'Content-Type': 'application/json' 
       } 
     }; 

     $http(downloadImageRequest).then(onImageSuccess, onImageFailure); 

     var onImageSuccess = function(response){ // i have put debug inside this method but never reaches controller 
      console.log(response ); 
      $scope.image = response.data.results[0]; 
     }; 
     var onImageFailure = function(response){ 
      alert("Failed to load image please try again!!"); 
      console.log(response); 
     }; 
    } 

Chrome開發工具的網絡選項卡,響應可見,但上述方法中,我設定的響應不會被觸發。

請幫忙

+0

所以,你可以看到數據回來的開發工具?先取下頭,你並不需要那。還失敗回調被執行? –

+0

是的,我看到開發工具中的數據...沒有回調被觸發。爲了確保我使用了console.log() – virendrao

+0

可以刪除標題並嘗試 –

回答

4

您應該先定義您的變量然後使用它們。定義一個變量不同於定義一個函數。所以,你可以:

var onImageSuccess = function(response){ 
     console.log(response ); 
     $scope.image = response.data.results[0]; 
    }; 

    var onImageFailure = function(response){ 
     alert("Failed to load image please try again!!"); 
     console.log(response); 
    }; 

    $http(downloadImageRequest).then(onImageSuccess, onImageFailure); 

,或者你可以做它定義了一個名爲功能:

$http(downloadImageRequest).then(onImageSuccess, onImageFailure); 

    function onImageSuccess(response){ // i have put debug inside this method but never reaches controller 
     console.log(response ); 
     $scope.image = response.data.results[0]; 
    } 

    function onImageFailure(response){ 
     alert("Failed to load image please try again!!"); 
     console.log(response); 
    } 
+0

我個人更喜歡底部定義。主要是因爲它總是阻止你遇到這些問題。您無需始終查看實施情況,但您始終需要一眼就看到發生了什麼。 –

+0

我也喜歡命名函數而不是變量,:) –

相關問題