2013-07-24 61 views
0

我已經花了幾個小時嘗試在線給出的所有不同的方法,但沒有任何工作。我只是簡單地想要加載腳本以在所有圖像加載後運行。有沒有關於Angular的東西讓我不能這樣做?我正在使用$routeProvider如何設置腳本在所有照片加載後運行?

var photos = { 
    name: 'photos', 
    url: '/photos', 
    views: { 
     main: { 
      templateUrl: "views/photos/photos.html", 
      controller: function($scope,$http){ 
       $http({ 
        url: 'get/photos', 
        method: "POST" 
       }) 
        .success(function (data, status, headers, config) { 
         $scope.data = data; 
         // this doesn't work 
         $(window).load(function() { 
          myScript(); 
         }); 
        }) 
        .error(function (data, status, headers, config) { $scope.status = status; }); 
      } 
     } 
    } 
}; 

順便說一下,我在控制檯中沒有收到任何錯誤。

+0

我不知道angularjs,但是當我讀到這個問題的標題時,我很好奇你的方法。如果您可以獲取要加載的照片數量,您可以簡單地使用計數器,然後在達到計數器時啓動腳本? – Sebastian

回答

0

在我看來,http POST調用檢索照片。我假設myScript是一個函數。那麼,爲什麼不試試這個:

var photos = { 
    name: 'photos', 
    url: '/photos', 
    views: { 
     main: { 
      templateUrl: "views/photos/photos.html", 
      controller: function($scope,$http){ 
       $http({ 
        url: 'get/photos', 
        method: "POST" 
       }) 
       .success(function (data, status, headers, config) { 
        $scope.data = data; 
        myScript(); 
       }) 
       .error(function (data, status, headers, config) { 
        $scope.status = status; 
       }); 
      } 
     } 
    } 
}; 

因爲myScript函數只運行POST成功後。我認爲data是指實際的圖像數據。

+0

這是我最初試過的,但沒有奏效。出於某種原因,myScript()函數在所有照片加載之前運行。我意識到它應該在DOM之後運行,但是該功能需要在圖像實際加載後運行。 –

0

我不知道如果我真的瞭解你正在試圖獲得什麼類型的數據,但我認爲你可以用承諾

$ HTTP的角度嘗試已經返回包裹在.success或.error承諾,但你也可以使用.then()回調,就像所有其他的承諾

所以,如果問題是等待success()回調完成,你可以用這種方法做一些事情,用幾個替代它(然後):

$http.post(...).then(
       //function which will wait for the data to be downloaded 
       //here you can alter data, check some values etc... 
       ).then(
       //the script for what you want after 
       myScript(); 
       ); 

我做了一個小提琴解釋:http://jsfiddle.net/Kh2sa/2/

它模擬一個較長的響應時間$超時,所以你必須等待3個secondes看到你修改的數據,直到調用myScript的()函數

相關問題