3

<md-autocomplete>ここから例を試していますmd-chips

選択したアイテムが内部に入らないようにするために、<md-autocomplete>次のように querySearch 関数を変更しました。

function querySearch (query) {
    var results = query ? self.searchData.filter(createFilterFor(query)) : [];
    var finalResults = [];
    angular.forEach(results, function(result) {
        if($scope.selectedItems.indexOf(result.name) < 0) {
            finalResults.push(result);
            updateSelectedItems(result);    
         }
    });
    return finalResults;
}

しかし、私の問題は、アイテムを選択すると、コントロールがこの関数内に入らないことです。誰かがこれを解決する方法を説明できますか?

4

2 に答える 2

3

このドキュメントから解決策を見つけました: md-autocomplete

クエリ項目を検索するたびmd-no-cache="true"に関数を呼び出すために追加する必要があるだけですquerySearch

于 2015-05-19T16:49:46.647 に答える
1

私のために働いた解決策: md-autocomplete の md-no-cache="true" は、オートコンプリートに md-items を強制的に再初期化させるために必要です。md-chips には、md-on-remove と md-on-append を設定し、リストからチップを削除するか、リストにチップを追加するように実装する必要があります。

私のコードは次のようになります: HTML:

 md-on-remove="removeTagChip($chip)"
 md-on-append="appendTagChip($chip)"

JS:

$scope.removeTagChip = function (chip) {
    var chipPos = $scope.getPosition(chip.Id, $scope.ChipTags);
    if (chipPos < 0) {
        $scope.ChipTags.push(chip);
    }
};
$scope.appendTagChip = function (chip) {
    var chipPos = $scope.getPosition(chip.Id, $scope.ChipTags);
    if (chipPos > -1) {
        $scope.ChipTags.splice(chipPos, 1);
    }
    return chip;
};

$scope.getPosition は、チップのリスト内のチップの位置を返すだけです。

于 2015-10-09T11:26:56.630 に答える