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' }; }]);
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