2013-08-01 52 views
10

以下作品從

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

調用一個函數ActiveChange(可變)但是,如果該功能被定義爲AngularJS $範圍功能,如

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

你怎麼稱呼$範圍。 ActiveChange =函數(activeTab)從?

+2

有沒有你不使用[ngClick]一個原因(http://docs.angularjs.org/api/ ng.directive:ngClick)? – Mike

+0

是的,儘管不是一個很好的理由。 (缺乏知識)謝謝你的領導。 –

+1

我在控制器中看到了DOM引用嗎? ....恥辱你:) – Spock

回答

23

只需使用ngClick就像@Mike說。我沒有看到在href中使用角度的原因。

喜歡的東西:

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

還是讓它空:

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

'href'值應該是'javascript:void(0);'或者留空 - 否則瀏覽器會將頁面向上滾動。從'ng-click'表達式返回false將不會阻止它的發生(我想這是正確的,因爲如果範圍的方法必須知道它被調用的上下文,它會很奇怪) –

+0

也可以設置href等於「javascript:angular.noop();」而不是「#」或「void(0)」 –