1

そのため、ng-repeat リストにカスタム フィルターを設定しました。これは、同じページで別のボタンを使用して動的に変更できます。

私の質問は、このフィルターをページ外の値で変更するにはどうすればよいかということです。

明確にするために、「list.view.html」に ng-repeat リストがあり、フィルター値を含むホームページのボタンを押して、「list.view.html」をロードできるようにしたいと考えています。私のホームページのボタンのパラメータを含むフィルタリングされた結果。

さらに繰り返すには、

list.view.html の ng-repeat の上に、次のようなボタンを含めます。

<button class="sortBy" ng-click="myFilter =  { statusOpen : true }">Open</button>

statusOpen ブール値が true と評価される項目のみを含めるように ng-repeat を更新します。

これが私のng-repeatのフィルターです

<li class="list-group-item animate-repeat" data-ng-repeat="task in vm.tasks | filter:search | filter:myFilter>

フィルタリングされた結果を含む list.view.html ページにルーティングするホームページのボタンをクリックして、同じ結果を得るにはどうすればよいですか?

list.view.html のコントローラーで param フィルターを設定しようとしましたが、機能しませんでした。

たとえば<a ui-sref="tasks.list({ myFilter = { onlineTask : 'true' } })">、私のホームページと::私のclient.routes.js

 params: {
       myFilter: null
 }

コンソール エラー メッセージ

angular.js:11706 エラー: [$parse:syntax] 構文エラー: トークン '=' は予期されていません。式 [{ myFilter = { onlineTask : 'true' } }] の列 12 で [:] を [= で開始する必要があります。 { onlineTask : 'true' } }]. http://errors.angularjs.org/1.3.20/ $parse/syntax?p0=%3D&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=12&p3=%7B%20myFilter%20%3D %20%7B"

これをどのように進めるかについての一般的な方向性を探しています。

よろしくお願いします

4

1 に答える 1

1

angular-ui フィルターで必要なパラメーターを設定することが、目的を達成するための最良の方法だと思います。

次のことを覚えておく必要があります。

  1. URL を適切に設定し (URL にパラメーターを含める)、$stateParamsコントローラーのサービスを使用してパラメーターを処理します。複数のフィルターがある場合は、配列を使用できます。

    $stateProvider
    .state('search', {
      url: "/search/?myFilter",
      templateUrl: 'search.html',
      controller: function ($stateParams) {
      // Get filter(s)
       console.log($stateParams.myFilter);
      }
    })
    
  2. パラメータを適切に割り当てますui-sref(コロンを使用してください!):

    <a ui-sref="filter({ myFilter: ['filter1','filter2'] })">Go and filter</a>

例を参照してください: http://plnkr.co/edit/QOHNYHVPRJ8iBm3Adjcj?p=preview

于 2016-05-19T19:05:57.637 に答える