1

我找不到我正在尝试做的替代解决方案,可以说我在 jquery 中有这段代码:

$.get 'file.json', (re) ->
   for k, v in re
      tpl = "<div>{{v.content}}</div>";
      $ '#container'.append tpl
 .done () ->
     impress().init()

这很好用,因为.done仅在 ajax 之后执行代码,但 angular 似乎没有一些 like .done,并且impress().init()在加载内容时无法重新初始化,因此数据绑定会出错..

这是我对角度的尝试

App.controller 'SomeCtrl', ($scope, $http) ->
   $http.get('file.json')
   .success (res) ->
      $scope.slides = res
   #what could possibly be in here
4

3 回答 3

2

您可以then在以下时间致电success

$http.get('file.json')
  .success(function(data) {
    console.log('success');
  })
  .then(function() {
    console.log('success again');
  });

这是一个例子

于 2013-09-12T04:26:12.103 回答
1

Angularjs 有success和的方法error。阅读文档

 $http({method: 'GET', url: '/someUrl'}).
  success(function(data, status, headers, config) {
    // this callback will be called asynchronously
    // when the response is available
  }).
  error(function(data, status, headers, config) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });
于 2013-09-12T04:16:05.540 回答
1

看一个类似的问题,在Benjamin Gruenbaum 建议的答案之一中,.always所有承诺都提供了 which (包括来自 的返回值$http.get)。他在 fiddle 上包含了一个有用的代码示例:

HTML:

<div ng-controller="Ctrl">
  {{data}}
</div>

JavaScript:

var myApp = angular.module('myApp', []);
var data = {hello:"World!"};
function Ctrl($scope, $http) {
    $http.post('/echo/json/', 'json=' + encodeURIComponent(angular.toJson(data)), {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    }).always(function(data) {
         alert("HI");  
    });
}

本杰明指出.always已被.finally. 这是使用.finally最新的 Angular.js 的小提琴。

HTML:

<div ng-controller="MyCtrl">Hello, {{name}}!</div>

JavaScript:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) {
    $scope.name = 'Superhero';
    $http.get('/echo/json/').
    success(function() {
        $scope.name = 'Sidekick';
        }).  
    finally(function() {
         alert($scope.name);  
    });
}]);

(注意这是文档nfiniteloop$q 'finally' not working in IE8的回答也可能有用。)

于 2014-12-11T13:08:02.617 回答