2013-08-01 10 views
10

następujące prace wywołać ActiveChange funkcji (zmienne) z

a(href="javascript: ActiveChange('topStories');") Top Stories 

Ale jeśli funkcja jest zdefiniowana jako funkcja zakres angularjs $ takie jak

function activeController ($scope) {  
    $scope.topStories='active'; 
    $scope.mostRecent='lucky'; 
    $scope.ActiveChange = function (activeTab) { 
     if(activeTab=='topStories'){ 
      var x=document.getElementById("someinput"); 
      x.value='happy to be alive'; 
      $scope.topStories='active'; 
      $scope.mostRecent=''; 
     } 
     else {  
      alert('else'); 
      $scope.topStories='happy'; 
      $scope.mostRecent='active'; 
     } 
    } 
} 

Jak zadzwonić $ zakres. ActiveChange = funkcja (activeTab) z?

+2

Czy istnieje powód, dla którego nie używasz [ngClick] (http://docs.angularjs.org/api/ ng.directive: ngClick)? – Mike

+0

tak, choć nie jest to bardzo dobry powód. (brak wiedzy) Dzięki za heads up. –

+1

czy w twoim kontrolerze są widoczne odwołania do DOM? .... wstydź się :) – Spock

Odpowiedz

23

Po prostu użyj ngClick, jak np. @Mike. Nie widzę powodu, aby używać kątowego w href.

Coś jak:

<a href="" ng-click="ActiveChange('topStories');">Top Stories</a> 

Albo zostawić puste:

<a href ng-click="ActiveChange('topStories');">Top Stories</a> 
+6

Wartość 'href' powinna być' javascript: void (0); 'lub pozostaw puste - w przeciwnym razie przeglądarka przewinie stronę do góry. Zwrócenie wartości false z wyrażenia 'ng-click' nie zapobiegnie temu (i myślę, że to prawda, ponieważ byłoby dziwne, gdyby metoda zakresu musiała być świadoma kontekstu, z którego się nazywa) –

+0

może również ustaw href równy "javascript: angular.noop();" zamiast "#" lub "void (0)" –

Powiązane problemy