2013-05-25 10 views
6

Jestem nowy w AngularJS, i kliknąłem na przycisk radiowy wygenerowany przez ng-repeat, a kliknięcie nie chce wystrzelić. Jeśli używam prostego onclick, , który działa.ng-click nie uruchamia globalnej funkcji javascript.

To działa, i widzę Alert:

<div class="span2 left-justify" 
     ng-repeat="choice in physicalmode_choices"> 
    <input type="radio" 
      name="physical_layer" 
      value="{{ choice.private }}" 
      onclick="alert('foo')" 
      required 
      ng-model="$parent.networkoptions.physicalmode" /> 
      &nbsp;<span ng-bind="choice.public"></span> 
</div> 

Ale tego nie robi:

<div class="span2 left-justify" 
     ng-repeat="choice in physicalmode_choices"> 
    <input type="radio" 
      name="physical_layer" 
      value="{{ choice.private }}" 
      ng-click="alert('foo')" 
      required 
      ng-model="$parent.networkoptions.physicalmode" /> 
      &nbsp;<span ng-bind="choice.public"></span> 
</div> 

Nie mogę tego zrobić z ng-click? Czy nie rozumiem, czym jest "wyrażenie"?

Dzięki Mike

+0

Rozważ zmianę tytułu tej kwestii, to nie opisuje problem i jego odpowiedź. Ten sam problem miałby miejsce w przypadku każdej dyrektywy lub struktury, nie tylko tej. Może coś takiego jak * ng-click nie rozpoznaje natywnej funkcji javascript * –

Odpowiedz

2

Po wywołaniu coś wewnątrz z ng kliknij usługę analizowania ocenia wyrażenia przeciwko zakresu zamiast globalnego obiektu okna.

Jeśli chcesz wykonać alert wewnątrz ng-kliknięcia, możesz napisać metodę w zakresie lub zasięgu rodzica, który z kolei wywoła alert.

20

Aby wyjaśnić odpowiedź DerekR użytkownika.

Kiedy kątowe widzi

ng-click='alert("test")' 

szuka

$scope.alert 

która może być zdefiniowana.

Musisz podać metodę proxy w zakresie, a może nawet rootkopu.

Na przykład:

$rootScope.log = function(variable) { 
    console.log(variable); 
}; 
$rootScope.alert = function(text) { 
    alert(text); 
}; 

Patrz: http://deansofer.com/posts/view/14/AngularJs-Tips-and-Tricks-UPDATED#scopemethods

+0

Doskonałe rozwiązanie –

Powiązane problemy