2013-07-24 28 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的()函数

相关问题