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