Angularjs 调用服务工厂函数(http)的角度选择

Angularjs 调用服务工厂函数(http)的角度选择,angularjs,Angularjs,简单的情况下,我有一个名为lists()的服务来检索列表。但我不知道如何自动调用该服务 主js 当我更改选择时,我可以看到标题更新。我的控制器有一个“lists”方法,它接受一个list对象,并将执行查询,但它从未被调用 关于我遗漏的内容有什么建议吗?您不能从模板调用服务,您也不想这样做,因为这意味着您没有适当的关注点分离。解决方案是使用范围方法包装您的服务: $scope.getList=函数(列表){ 如果(!angular.isDefined(list))返回; $scope.curren

简单的情况下,我有一个名为
lists()的服务来检索列表。
但我不知道如何自动调用该服务

主js 当我更改选择时,我可以看到标题更新。我的控制器有一个“lists”方法,它接受一个list对象,并将执行查询,但它从未被调用


关于我遗漏的内容有什么建议吗?

您不能从模板调用服务,您也不想这样做,因为这意味着您没有适当的关注点分离。解决方案是使用范围方法包装您的服务:

$scope.getList=函数(列表){
如果(!angular.isDefined(list))返回;
$scope.currentList=List.lists(列表);
}
然后在模板中使用:

  • {{t.title}:{{{t.id}

我认为最好对所选列表的更改做出反应,然后查询服务。否则,您将查询每个$digest循环的服务

$scope.$watch('list', function(list) {
       $scope.tasks = List.lists(list).tasks;    });
更新了此解决方案的fiddle:


(但是没有得到你对数据的操作,但可能是那是一段更复杂的代码…

如果你能共享JSFIDLE,那就更好了!!结果,我的小提琴示例被大大简化了。再次感谢。
angular.module('service',['ngResource']).factory('List', function($http) {
  var List= function(data) {
#magic to build List from json
#save to ._lists
#or if just one build List
  }
  List.lists = function(list_id, query) {
    url = '/tasks/lists/';
    #if list_id is there use it else give all lists
    return $http.get(url).then(function(response) {
      return new List(response.data);
   });
 };
//this initially populates lists._lists with all the available lists
//it also has a List method on the object   
$scope.lists= List.lists();
$scope.$watch('list', function(list) {
       $scope.tasks = List.lists(list).tasks;    });