私はangle uib-aheadaheadを使用しているアプリを持っています。uib-typeaheadでのAngularJsフィルタリングが機能していません
データはajaxコールによってリモートにロードされます。
私は$ viewValue文字列を含む「名前」との結果のみを表示する結果をフィルタリングする必要があります。
ここに私のコードです。私の問題は、データが決してフィルタリングされないということです。
私は間違っていますか?
//マークアップ
<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;
});
};
}]);
はご回答いただきありがとうございます。私はより良く説明します。私はコメントしたコードで言ったように、プロフェッショナルのみを使ってテストを行いました。私は本当に約束から "response.data"が必要で、ビューやコントローラに "viewValue"を使ってフィルタ "response"が必要です。 –
@LuizAlves私は理解して、私の提案を適用することもできます。スコープ変数に 'response.data'を割り当て、あなたのビューでそれを使用してください。 – Hoa
こんにちは、それは動作しません。私はコントローラとしてフィルターを試しました:$ scope.getTabelaTUSS = function(val){ return dataService.getTabelaTUSS()。(function(response){ return filterFilter(response.data、val); }); }; または「return response.data;」を使用して表示するしかし、何も動作しません。 –