自動入力でタグ入力フィールドを作成しようとしています。ここでは角度コードは次のとおりです。ngTagsInputフィルタ付きオートコンプリート
var app = angular.module('plunker', ['ngTagsInput']);
app.controller('MainCtrl', function($scope, $http) {
$scope.loadTags = function(query) {
return $http.get(Routing.generate('my_route_to_json_data'));
}
});
HTMLコード:
<body ng-app="plunker" ng-controller="MainCtrl">
<tags-input ng-model="tags" add-on-paste="true" display-property="categoryname" placeholder="Add a Tag">
<auto-complete max-results-to-show="4" min-length="0" source="loadTags($query)"></auto-complete>
</tags-input>
<p>Model: {{tags}}</p>
</body>
$http.get(Routing.generate('my_route_to_json_data'));
戻りtags.json
:
[{"categoryname":"wifi"},{"categoryname":"cable"},{"categoryname":"tv"},{"categoryname":"geyser"},{"categoryname":"fridge"},{"categoryname":"sofa"},{"categoryname":"lift"},{"categoryname":"gas stove"},{"categoryname":"washing machine"}]
これはperfecltyに動作します。フィールドに入力を入力すると、ドロップダウンに候補が表示されます。
問題:ユーザーの入力に基づいて、表示されている候補がフィルタされるようにしたい。そのために
私はこれに私の角度のコードを変更:。
var app = angular.module('plunker', ['ngTagsInput']);
app.controller('MainCtrl', function($scope, tags) {
$scope.loadTags = function(query) {
return tags.load();
};
});
app.service('tags', function($q, $http, $filter) {
var tags = $http.get(Routing.generate('my_route_to_json_data'));
this.load = function(query) {
var deferred = $q.defer();
deferred.resolve($filter('filter')($scope.tags, query));
return deferred.promise;
};
});
は、任意およびすべてのヘルプは高く評価され:(
を動作しません
エラーが発生していますか? あなたは '$'サービスを 'tags'サービスに注入していません。 –
@タルンフィードバックのおかげで、私は編集しました。それでも動作しない – utkarsh2k2
この行には '$ scope'とは何か ' '' javascript deferred.resolve($ filter( 'filter')($ scope.tags、query))); '' ' –