3

我在控制器中有一个简单的服务:

function OPctrl($scope, $http) {
    var s = 'http://query.yahooapis.com/v1/public/yql?q=select * from etc..... &format=json&callback=JSON_CALLBACK';
  $http.jsonp(s).success(function(data) {
      $scope.titoli = data.query.results.ROWSET.ROW;
  }).
  error(function(data, status, headers, config) {
    alert("error!")
    });
}   

控制器将一些数据绑定到一个表中。每次需要时我都需要调用和刷新数据(即使用刷新按钮)。我可以在我的控制器内工作吗?如何?或者我需要定制服务?我是角度新手,有人可以帮忙吗?

4

1 回答 1

1

最好使用自定义服务。要将数据返回到您的控制器,您有三种可能的选择:

  • 返回一个promise(使用$q)并在promise then() 函数中设置范围值
  • 向您的服务函数添加回调并在其中设置范围值
  • 让您的服务返回一个对象而不是原始类型并将其设置为范围

要使用您的服务,您只需将其注入您的控制器:

app.contoller('Ctrl', ['$scope', 'service', function($scope, service) {
...
}]);

在行动中可以看到所有三种可能性就是这个jsFiddle

于 2013-01-04T11:19:19.627 回答