AngularJS – Dispara quando o radio button é selecionado

Eu procurei e tentei muitas opções de ng-xxxx, mas não consegui encontrar a única .. Eu só quero chamar alguma function no controlador quando o radio button é selecionado.

Então, pode ser semelhante ao seguinte .. (Claro, abaixo do código não está funcionando)

 

Existe alguma maneira de conseguir o que eu quero?

Existem pelo menos dois methods diferentes para invocar funções na seleção de botões de opção:

1) Usando ng-change diretiva ng-change :

  

e depois, em um controlador:

 $scope.newValue = function(value) { console.log(value); } 

Aqui está o jsFiddle: http://jsfiddle.net/ZPcSe/5/

2) Observando o modelo para mudanças. Isso não requer nada de especial no nível de input:

  

mas em um controlador um teria:

 $scope.$watch('value', function(value) { console.log(value); }); 

E o jsFiddle: http://jsfiddle.net/vDTRp/2/

Saber mais sobre o seu caso de uso ajudaria a propor uma solução adequada.

Deve usar ngChange em vez de ngClick se a origem do trigger não for de um clique.

Está abaixo o que você quer? o que exatamente não funciona no seu caso?

 var myApp = angular.module('myApp', []); function MyCtrl($scope) { $scope.value = "none" ; $scope.isChecked = false; $scope.checkStuff = function () { $scope.isChecked = !$scope.isChecked; } } 
{{value}} isCheck:{{isChecked}}

Em versões mais recentes de angular (estou usando 1.3) basicamente você pode definir o modelo e o valor e a dupla binding fazem todo o trabalho deste exemplo funciona como um encanto:

 angular.module('radioExample', []).controller('ExampleController', ['$scope', function($scope) { $scope.color = { name: 'blue' }; }]); 
    
Red
Green
Blue
color = {{color.name}}

Eu prefiro usar ng-value com ng-if, [ng-value] irá lidar com mudanças de trigger

  //to show and hide input by removing it from the DOM, that's make me secure from malicious data  

Para valores dynamics!

 

no controlador

 $scope.changeTipoAcesso = function(value) { console.log(value); }; 

Outra abordagem é usar Object.defineProperty para definir value como uma propriedade setter getter no escopo do controlador, então cada mudança na propriedade value acionará uma function especificada no setter:

O arquivo HTML:

    

O arquivo javascript:

 var _value = null; Object.defineProperty($scope, 'value', { get: function () { return _value; }, set: function (value) { _value = value; someFunction(); } }); 

veja este plunker para a implementação

  
currently selected: {{radioValue}}