リストフィルタに関して

35 views
Skip to first unread message

佐瀬啓

unread,
May 18, 2017, 9:59:37 PM5/18/17
to Angular Japan User Group
初めまして、佐瀬と申します。

今回、別の人の案件を引き継ぎ、初めてangularJSを触っております。

現在、困っている箇所として、
似た様なページが2箇所ありまして、テキストボックスに入力した文字で
リストをフィルタリングしています。

半角英数字や日本語のコピペは挙動が変わらないのですが、
日本語を手入力した場合に、一方ではenter(確定)後にフィルタリングがかかります。
もう一方はテキストボックスからフォーカスが外れたタイミングで、フィルタリングがかかります。

お客様からenter後にフィルタリング出来る様、挙動の修正を頼まれてますが、
現時点で差が分からず、確認項目等御座いましたら、
ご助言伺いたく存じます。何卒宜しくお願い致します。

========================================
■抜粋
<tr ng-repeat="site in ClientModel.sites|filter:siteFilter"> ・・・・・・ </tr> app.controller('AppCtrl', function($scope, ・・・) { $scope.search_query = ''; return $scope.siteFilter = (function(_this) { return function(item) { ・・・・・・ return false; }; })(this); });
========================================

norami...@gmail.com

unread,
Jun 2, 2017, 10:06:44 AM6/2/17
to Angular Japan User Group
佐瀬様

これだけでは原因までは、
何とも分からないのですが、可能性としては以下のようなことが考えられます。

1. ngModelOptionsで、
updateOn: blurが指定されている。
この場合、フォーカスが外れたタイミングで反映されます。
デフォルトは、変更時に反映されます。
(症状としてはドンピシャですが、これなら見れば気づくのではないかという気がします)

2. angularではデフォルトで、
バリデーションが通るまで、modelに反映されないので、それが関係している。
(症状から考えると違う気がします)

3. $applyのタイミングの問題。
反映されない状態で、angular.element(該当する要素).scope().$apply()
として反映されるかどうかで確認できます。
(症状から考えると違う気がしますが、$scopeの生成をカスタマイズしている場合などは、
いろいろ条件が重なれば、ありえないとは言い切れない)

いずれにせよ、フィルター側の実装は関係ないのではないかと思います。


norami


2017年5月19日金曜日 10時59分37秒 UTC+9 佐瀬啓:
Reply all
Reply to author
Forward
0 new messages