angularjs – Angular:如何在过滤器中使用$http
我想在一个过滤器中请求我的后台,并返回我的请求的结果.
问题是服务$http返回承诺,这是问题. 对于目前的问题,我使用了一个$timeout和在我的小提琴中有希望的承诺: 在我的过滤器中,我使用一个$timeout与承诺,但最终的目标是使用一个请求http: myApp.filter('filterHello',function ($http,$timeout,$q) { return function (company_id) { console.log("in the filter"); var deferred = $q.defer(); $timeout(function() { deferred.resolve("ca marche"); },2000); return deferred.promise; }; }); 那么在我看来,我使用我的过滤器,假设他们显示“ca marche”,延迟2秒,但是不行: <div ng-controller="MyCtrl"> {{hello|filterHello}} </div> 你可以看到过滤器没有返回任何东西,并且在过滤器中有一个无限循环,因为我认为是空的承诺. 如果您不明白我为什么要在过滤器中使用http请求,答案很简单. {{user.company_id | ShowNameCompany}} 所以,我需要在过滤器中向我的后台的公司控制器请求http. 我希望有人能帮助我.
我认为你不应该这样使用过滤器.过滤器用于基于可选参数转换输入.
这里的问题是您立即从过滤器函数返回承诺.这是因为过滤器而言,Angular可以处理它. 因此,我的建议将是 – 首先获取结果,使用基于结果的过滤器: var app = angular.module("my.module"); app.controller("MyCtrl",['$http','$scope',function(http,scope) { scope.hello = "foo"; http.get('http://my.service.com').then(function(data) { scope.filterParams = data; },function(err) { scope.filterParams = undefined; }); }]); app.filter("filterHello",function() { return function(input,params) { if(typeof params === "undefined") { return ""; } //work with the params here }; }); 并在模板中: <div ng-controller="MyCtrl"> {{hello|filterHello:filterParams}} </div> 编辑:只是阅读你的解释.对我来说,这将是一个指令的候选人: app.directive("companyName",function(http) { return { template: "<span>{{name}}</span>",scope: { companyId: "=" },link: function(scope) { http.get("http://my.service.com/companies/" + scope.id).then(function(result) { scope.name = result.name; },function(err) { scope.name = "unknown"; }); } } }]); 并在模板中: <span company-name company-id="user.company_id"></span> 如果你有很多公司,你应该预先加载这些名字(最初可能会发送他们的第一个答案),因为你会像你的服务器那么多的请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Bash重命名扩展递归
- AXIS实现WebService
- bootstrap datepicker 属性设置 以及方法和事件
- 使用Typescript(Angular 5)中的类vs接口与Java和C#进行对象
- twitter-bootstrap – 无法弄清楚如何使用Bootstrap缩略图组
- uiview – 如何在AngularJS中设置嵌套视图?
- 如何使用scala Elem生产泽西文/ xml?
- angularjs – 如何使用Typescript将ui-router stateProvide
- kubernetes1.75 一键安装shell脚本(避坑)kubeadm版
- 关于Scala变量可变性的问题