Pergunta

Eu tenho um formulário dentro do meu controlador.Eu gostaria de ser capaz de definir um escopo variável, baseado sobre a validade deste formulário.Eu tenho dado a forma de um nome já:

<div ng-controller="myCtrl">

    ...

    <form name='myForm'>
        ...
    </form>

    ...

</div>

E se tiver criado um $assistir no formulário de dólares de propriedade válido (este está localizado no controlador que contém o formulário):

$scope.$watch('myForm.$valid', function(oldVal, newVal) {
    console.log("Woo! This might be working!");
    if (newVal) {
        $scope.otherVar = true;
    } else {
        $scope.otherVar = false;
    }
}

A minha declaração de log aparece APENAS no carregamento da página, mas não quando o formulário de validade da mudança.(Eu tenho verificado que o formulário de us $válido propriedade está mudando inserindo:

{{ myForm.$válido }}

no âmbito do meu formulário)

Eu estive olhando em volta e pelo que tenho visto este deve estar trabalhando.(Obviamente que algo está errado, embora...)

Foi útil?

Solução

Eu acho que o seu problema é function(oldVal, newVal) deve ser function(newVal, oldVal).Além de que eu não posso encontrar qualquer falha em seu código.Aqui está um trabalho plunkr exemplo: http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

Fora que é provavelmente algo mais no seu código que afetam o formulário, você não tem aninhado em algo como um ng-if ou ng-view?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top