Angular.js刷新控制器内的服务

时间:2013-01-04 09:51:40

标签: controller angularjs

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

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!")
    });
}   

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

可以看到所有三种可能性都是jsFiddle