3

有効性が複数のテキストボックス間の関係に依存するフォームがあります。たとえば、3 つのテキスト ボックスがある場合、フォームは、各テキスト ボックスの整数値が前のテキスト ボックスの整数値より大きい場合にのみ有効です。

ユーザーがテキストボックスのいずれかを編集すると、フォーム全体が再検証されるように、このフォームを設定したいと思います。

次のように、すべてのテキストボックスで ng-change=revalidate() を設定しようとしました。

$scope.revalidate = function() {
    var formData = $parse('signals');
    var dataCopy = angular.copy(formData($scope));
    formData.assign($scope, dataCopy);
};

フォームのデータをコピーして再割り当てすると再検証が行われることを期待しましたが、うまくいかないようです。どうすればこれを達成できますか?

4

2 に答える 2

0

完璧ではありませんが、現在取り組んでいることは次のとおりです。

$element.bind('blur', function() {
    formCtrl[inputName].$dirty = true;
    $scope.$emit('validate-refresh');
});

$scope.$on('validate-refresh', function() {
    var control = formCtrl[inputName];
    if (control.$dirty) {
        control.$setViewValue(control.$viewValue);
    }
}
于 2014-12-04T02:50:54.607 に答える