2016-11-21 5 views
0

ng-gridを使用して表形式でデータを表示するコードを開発しました。ここでは、カスタムフィルタを適用する必要があります。グリッドにIDとタイトルの2つの列があります。また、タイトルを含む提案入力ボックスが1つあります。入力ボックスからタイトルが選択されると、グリッド内のデータは選択されたタイトルに基づいてフィルタリングされます。グリッドをクリックするとngグリッドフィルターが影響を受ける

以下は、この機能を実装するためのコードです。

HTML

<div ng-app="myApp" ng-controller="MyCtrl"> 
<div class="gridStyle" ng-grid="gridOptions"></div> 
<div style="position: relative; height: 80px;"> 
    <input type="text" name="country" id="autocomplete-ajax" style="position: absolute; z-index: 2; background: transparent;"/> 
    <input type="text" name="country" id="autocomplete" disabled="disabled" style="color: #CCC; position: absolute; background: transparent; z-index: 1;"/> 
</div> 

JS

// binding unique names to the suggestions pluggin for filter. 
    $('#autocomplete-ajax').devbridgeAutocomplete({ 
     lookup: $scope.unique, 
     minChars: 1, 
     onSelect: function (suggestion) { 
      console.log(suggestion); 
      $scope.filterSearch('Title',suggestion.value); 
     }, 
     showNoSuggestionNotice: true, 
     noSuggestionNotice: 'Sorry, no matching results'    
    }); 

// configuring ng-grid options 
    $scope.gridOptions = { 
     data: 'videoColl', 
     showGroupPanel: false, 
     jqueryUIDraggable: false, 
     showFilter: false,   
     multiSelect:false, 
     filterOptions: $scope.filterOptions 
    }; 
    $scope.filterSearch = function(searchField,searchText) { 
    var filterText = searchField + ':'+ searchText; 
    $scope.filterOptions.filterText = filterText;  
    }; 

私はそれがデータフィルタが、変更は、グリッド内の瞬間ときに表示されていないautocomplete-ajaxから任意のタイトルを選択私は任意のタイトルを選択する代わりに、データはグリッドで変更されますタイトルを選択した後、グリッドをクリックします。

完全に動作させるには何が欠けていますか?

+1

filterOptionsの更新後に '$ scope。$ apply()'を呼び出してみましたか? – Palo

答えて

1

フィルタデータを変更した後、$scope.$apply()コールがありません。

jQueryは角度の範囲外であるため、手動でダイジェストサイクルを起動してhtmlにデータ変更を適用する必要があります。

+0

ありがとうございます!期待どおりに100%働いています。 –

関連する問題