AngularJSページのリンクをクリックしたときにangularJSのテキストボックスをクリアする方法

Devesh Agrawal

HTMLページで検索ボックスと複数のカテゴリのリンクを利用できます。

ユーザーがsearchBoxに入力するとすぐに、次のように表示します。

p in Products | filter {serachedText}

ユーザーがカテゴリのハイパーリンクをクリックすると、表示したい

p in Products | filter {categoryID}

しかし、serachedTextはまだ利用可能であるため、結果は

p in Products | filter {categoryID} | filter {serachedText}

ユーザーが任意のリンクをクリックするとすぐにserachedTextをクリアできる方法はありますか?

ジミーチャンドラ

フィルタ式が間違っています。

データが次のようなカテゴリと名前のプロパティを持つJSON配列の場合:

self.Products = [
  { category: 1, name: 'Pencil' },
  { category: 1, name: 'Notebook' },
  { category: 2, name: 'Kitten' }
];

そして、選択したカテゴリと検索テキストに対して次のものをバインドします。

self.category = 1;
self.searchText = 'pen';

次のような複雑なフィルター式を作成できます。

filter: { category: vm.category | name: vm.searchText }

これにより、categoryとsearchTextの両方、またはそれらの組み合わせでフィルタリングされます。

searchTextをクリアするには、$ scope。$ watchを使用してカテゴリが変更されたかどうかを確認し、変更された場合はsearchTextをクリアします。

以下の例またはhttp://plnkr.co/edit/OEDvOnをご覧くださいこの例では、選択したカテゴリが実際には選択したカテゴリの値と名前のプロパティを含むオブジェクトであるため、フィルタ式は少し複雑です。したがって、フィルタに渡す正しいものを取得するには、.valueを追加する必要があります。

別のポイント:クライアント側のフィルタリングを行う場合、これは問題ありませんが、サーバー側でフィルタリングする場合は、サービスレイヤーでフィルタリングを実行し、すべての可能なデータではなく、フィルタリングされた結果を返すだけです...帯域幅を節約しますと転送時間。

(function(undefined) {
  'use strict';
  
  angular.module('myApp',[]);
  
  angular.module('myApp')
    .controller('searchCtrl', searchCtrl);
    
  searchCtrl.$inject = ['$log', '$scope'];
  
  function searchCtrl($log, $scope) {
    /* jshint validthis: true */
    var self = this;
    
    self.searchText = undefined;
    
    self.categories = [
      { value: undefined, name: 'All' },
      { value: 1, name: 'Fruit' },  
      { value: 2, name: 'Snacks' },
      { value: 3, name: 'Flower' },
      { value: 4, name: 'Pet' },
      { value: 5, name: 'Stationary' }
    ];

    self.category = self.categories[0];
    
    self.data  = [
      { category: 1, name: 'Apple' },
      { category: 1, name: 'Grapes' },
      { category: 2, name: 'Dorito' },
      { category: 2, name: 'KitKat' },
      { category: 3, name: 'Roses' },
      { category: 3, name: 'Orchid' },
      { category: 4, name: 'Hamster' },
      { category: 4, name: 'Kitten' },
      { category: 5, name: 'Pencil' },
      { category: 5, name: 'Notebook' }
      ];
    
    $scope.$watch(function() { return self.category; }, function(val, old) {
      self.searchText = undefined;
    });
  }

}());
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

    <div class="container" ng-app="myApp" ng-controller="searchCtrl as vm">

      <div class="form-group">
        <label>Category</label>
        <select class="form-control" ng-options="cat.name for cat in vm.categories" ng-model="vm.category">
        </select>
      </div>
    
      <div class="input-group">
        <input class="form-control" type="textbox" ng-model="vm.searchText" placeholder="Search text here..." />
        <span class="input-group-btn">
          <button type="button" class="btn btn-primary">
            <i class="glyphicon glyphicon-search"></i> Search</button>
        </span>
      </div>
      
      <div class="well well-sm" style="margin-top:20px">
        <ul ng-repeat="item in vm.data | filter:{category:vm.category.value, name:vm.searchText}">
          <li>{{item.name}}</li>
        </ul>
      </div>
    </div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ボタンがクリックされたときにクリップボードにテキストエリアのテキストをコピーする

分類Dev

ボタンをクリックした後にページからテキストを非表示にする方法

分類Dev

UserControlのボタンをクリックして、UserControlに存在するテキストボックスの値をAspxページラベルに渡す方法

分類Dev

uwpの他のページをクリックしてボタンのテキストボックスに値を設定する方法は?

分類Dev

ボタンがクリックされたときにテキストボックスの値を更新する

分類Dev

グリッドビュー内のボタンをクリックした後にテキストボックスのテキストを変更する方法

分類Dev

ページのリロードまたはボタン クリック イベントでテキスト ボックスをクリアしない

分類Dev

このテキストボックスを最初にクリックした後にブラウザに別のページを表示する方法 (winforms C#)

分類Dev

「リセット」ボタンをクリックしたときにスピナーの値を更新する方法

分類Dev

ボタンクリック時にangularjsを使用して別のページにリダイレクトする

分類Dev

anglejsを使用してイベントをクリックしたときに行の値をテキストボックスに入力する方法

分類Dev

テキストだけをクリックする代わりに、ボックスをクリックして次のページに移動します

分類Dev

ボタンがwpfをクリックしたときに空のテキストボックスを検証する方法は?

分類Dev

最近のボタンandroidをクリックしたときにテキスト「設定」を無効にする

分類Dev

Androidプログラミングでボタンをクリックしたときにテキストビューをクリアする方法

分類Dev

入力テキストボックスの値をangularjsに送信するには、テキストボックスをクリックしますか?

分類Dev

Angularjsのボタンクリックでng-repeatテーブルの行にあるテキストボックスを強調表示します

分類Dev

リスト内のアンカーをクリックしたときに親の親を取得する方法

分類Dev

画像のクリック時にテキストボックスのコンテンツをクリアする

分類Dev

AngularJSを使用してクリック時にボタンのテキストを変更する

分類Dev

ページの閉じるボタンをクリックすると、すべての選択ボックスの値をクリアしたい

分類Dev

ページの準備ができたクリップボードにテキストをコピーする

分類Dev

リストアイテムをクリックしたときにラジオボタンをチェックするように設定する方法

分類Dev

クリックしたときにボタンタイプのテキストを変更する

分類Dev

動的に追加されたテキストボックスをクリアするためにページの読み込みを防ぐ方法

分類Dev

ui.routerを使用したAngularJS:同じ状態のリンクをクリックしたときにページをリロードする

分類Dev

空のスペースをクリックしたときにbody.onclickをトリガーする方法

分類Dev

2つの異なるアクティビティの2つのラジオボタンがクリックされたときに新しいアクティビティにテキストを表示する方法

分類Dev

ページ内の#タグをクリックしたときにテキストを強調表示する方法はありますか?

Related 関連記事

  1. 1

    ボタンがクリックされたときにクリップボードにテキストエリアのテキストをコピーする

  2. 2

    ボタンをクリックした後にページからテキストを非表示にする方法

  3. 3

    UserControlのボタンをクリックして、UserControlに存在するテキストボックスの値をAspxページラベルに渡す方法

  4. 4

    uwpの他のページをクリックしてボタンのテキストボックスに値を設定する方法は?

  5. 5

    ボタンがクリックされたときにテキストボックスの値を更新する

  6. 6

    グリッドビュー内のボタンをクリックした後にテキストボックスのテキストを変更する方法

  7. 7

    ページのリロードまたはボタン クリック イベントでテキスト ボックスをクリアしない

  8. 8

    このテキストボックスを最初にクリックした後にブラウザに別のページを表示する方法 (winforms C#)

  9. 9

    「リセット」ボタンをクリックしたときにスピナーの値を更新する方法

  10. 10

    ボタンクリック時にangularjsを使用して別のページにリダイレクトする

  11. 11

    anglejsを使用してイベントをクリックしたときに行の値をテキストボックスに入力する方法

  12. 12

    テキストだけをクリックする代わりに、ボックスをクリックして次のページに移動します

  13. 13

    ボタンがwpfをクリックしたときに空のテキストボックスを検証する方法は?

  14. 14

    最近のボタンandroidをクリックしたときにテキスト「設定」を無効にする

  15. 15

    Androidプログラミングでボタンをクリックしたときにテキストビューをクリアする方法

  16. 16

    入力テキストボックスの値をangularjsに送信するには、テキストボックスをクリックしますか?

  17. 17

    Angularjsのボタンクリックでng-repeatテーブルの行にあるテキストボックスを強調表示します

  18. 18

    リスト内のアンカーをクリックしたときに親の親を取得する方法

  19. 19

    画像のクリック時にテキストボックスのコンテンツをクリアする

  20. 20

    AngularJSを使用してクリック時にボタンのテキストを変更する

  21. 21

    ページの閉じるボタンをクリックすると、すべての選択ボックスの値をクリアしたい

  22. 22

    ページの準備ができたクリップボードにテキストをコピーする

  23. 23

    リストアイテムをクリックしたときにラジオボタンをチェックするように設定する方法

  24. 24

    クリックしたときにボタンタイプのテキストを変更する

  25. 25

    動的に追加されたテキストボックスをクリアするためにページの読み込みを防ぐ方法

  26. 26

    ui.routerを使用したAngularJS:同じ状態のリンクをクリックしたときにページをリロードする

  27. 27

    空のスペースをクリックしたときにbody.onclickをトリガーする方法

  28. 28

    2つの異なるアクティビティの2つのラジオボタンがクリックされたときに新しいアクティビティにテキストを表示する方法

  29. 29

    ページ内の#タグをクリックしたときにテキストを強調表示する方法はありますか?

ホットタグ

アーカイブ