0

各列の上部にフィルターがあるテーブルを作成しようとしていました。

Anyフィルターが機能しているのに、個々のcolumフィルターが機能していない理由を理解できません。

私はコード@http://plnkr.co/edit/6ghH02を持っています

ng-modelを設定した後、要素をコンパイルしようとしましたが、機能しませんでした。

誰か助けてもらえますか?

4

2 に答える 2

1

これを行うには、ディレクティブを削除し、input[text]のng-change属性を次のように使用します。

function TestController ($scope) {
    $scope.valueChanged = function (name, value) { 
        if (!$scope.search) {
            $scope.search = {};
        }
        $scope.search[name] = value;
    }
};

<body ng-controller="TestController">

<th ng-repeat="sortName in columnNames">
    <input type=text ng-model="value" ng-change="valueChanged(sortName, value)">
</th>

元のコードが機能しない理由に関する答えの短いバージョンは、ngRepeatが新しいスコープを作成し、ng-modelの値が割り当て可能な変数でなければならないというものです。

于 2012-12-09T21:18:42.053 に答える
0

@Ryanが指摘したように、ng-repeatのネストされたスコープがトリックです。コントローラメソッドを作成する代わりに、子スコープの$ parentプロパティを使用して、親スコープの検索プロパティにアクセスすることもできます。

<th ng-repeat="sortName in columnNames">
   <input type=text ng-model="$parent.search[sortName]"></th>

@Ryanのソリューションのように、ディレクティブは必要ありません。ただし、追加の検索プロパティを作成/初期化する必要があります。

<div ng-init="search.name = ''; search.phone = ''"></div>

http://plnkr.co/edit/wT34vh?p=preview

于 2012-12-11T18:27:26.710 に答える