5

ネストされたカテゴリ モデルを作成しました。製品のカテゴリを選択するために、メイン カテゴリのドロップダウンが表示されます。いずれかを選択すると、右側に新しいドロップダウンが追加され、選択したカテゴリの子カテゴリが表示されます。これは、最後のレベルに到達するまで繰り返されます。これがいつ起こるか$scope.product.category_idが設定されています。$scope.product.category_idのときにフィールドのセット全体を無効にしたいnull

私は検証に angular-bootstrap-show-errorsを使用してきましたが、カスタム関数を使用して、これを達成するためにui-utilsと混合しようとしました: validate_category().

私が使用したHTMLは次のとおりです。

<span ng-repeat="parent_id in category_dropdown_parents" show-errors="{ skipFormGroupCheck: true }">
    <select class="form-control" name="category_id"
        ng-init="selected_category[$index] = init_select($index);"
        ng-model="selected_category[$index]"
        ng-options="category.name for category in (categories | filter : { parent_id: parent_id } : true ) track by category.id "
        ng-change="select_category(selected_category[$index], $index)"

        ui-validate="'validate_category()'" // added this to work with ui-utils

        >
    </select> 
    <span ng-if="$index+1 != category_dropdown_parents.length">/</span>
</span>

そして、これは私の単純な検証関数です:

$scope.validate_category = function() {
    return  (   $scope.product.category_id !== null 
            &&  $scope.product.category_id !== undefined);
}

しかし、これは機能していません。アイデア?

ui-validate編集:これの問題は、関数の後に検証関数が実行されるため、更新ng-changeを確認できないことに気付きました。$scope.product.category_id

4

2 に答える 2

4

あなたの選択は使用しています

ng-model="selected_category[$index]"

しかし、検証機能は使用しています

$scope.product.category_id

使うべきではないか

ui-validate="'validate_category($index)'"

$scope.validate_category = function($index) {
    return($scope.selected_category[$index] !== null 
    && $scope.selected_category[$index] !== undefined);
}
于 2015-06-24T20:46:09.840 に答える