我有一个使用角度uib-typeahead的应用程序。
通过ajax调用远程加载数据。
我需要过滤结果,只显示结果" name"包含$ viewValue string。
这是我的代码。我的问题是数据永远不会被过滤。
我做错了什么?
//标记
<input type="text" ng-model="modelo.tuss" placeholder="Select TUSS"
uib-typeahead="item as item.name for item
in getTabelaTUSS($viewValue) | filter:{name:$viewValue}"
class="form-control">
//控制器
angular.module("clinang").controller('exameCtrl',['$scope', function($scope) {
var prof=[{"id":1,"name":"John Prof"},
{"id":2,"name":"Mary Prof"}];
$scope.getTabelaTUSS = function(val) {
return dataService.getTabelaTUSS().then(function(response){
return prof; //only to simulate results to test
});
};
}]);
更新了控制器:
//first option - geting rid off view filter and making local filter in controller
angular.module("clinang").controller('configAgendaAddProcedimentosCtrl',['$scope','dataService','$state','$filter',function($scope,dataService,$state,filter){
$scope.getTabelaTUSS = function(val) {
return dataService.getTabelaTUSS().then(function(response){
return filterFilter(response.data, val);
});
};
}]);
//second option - using view filter and no local filter in controller
//I also tried without success
angular.module("clinang").controller('configAgendaAddProcedimentosCtrl',['$scope','dataService','$state','$filter',function($scope,dataService,$state,filter){
$scope.getTabelaTUSS = function(val) {
return dataService.getTabelaTUSS().then(function(response){
return response.data;
});
};
}]);
答案 0 :(得分:0)
如果您将以下块替换为return prof;
,它将按照我在this Plunker
return dataService.getTabelaTUSS().then(function(response){
return prof; //only to simulate results to test
});
return
语句的问题是它返回一个由dataService.getTabelaTUSS().then()
调用返回的promise对象。要解决此问题,请将prof
分配给范围变量,并在视图中使用它,而不是在then
中返回prof
。
答案 1 :(得分:0)
您正在调用Before Conversion:
R: 128
G :39
B :50
H: 352.58426
S: 69.53125
V :100.0
After conversion
R: 158
G: 126
B: 233
方法,但您从未在控制器中注入dataService.getTabelaTUSS()
。
按如下方式在控制器中注入dataService
。
dataService
注意:不要忘记在HTML代码中加入angular.module("clinang").controller('exameCtrl',['$scope','dataService' function($scope,dataService) {
var prof=[{"id":1,"name":"John Prof"},
{"id":2,"name":"Mary Prof"}];
$scope.getTabelaTUSS = function(val) {
return dataService.getTabelaTUSS().then(function(response){
return prof; //only to simulate results to test
});
};
}]);
服务文件。
另外,如果我们看到您未使用dataService
方法dataService.getTabelaTUSS()
的代码,则返回response
对象。因此,如果您不需要服务中的数据,请按以下步骤更新您的方法。
prof