2014-04-16 82 views
-1

我包括與ng-include functionnality視圖:爲什麼ng-click函數被執行兩次?

<footer ng-include="view" ng-controller="searchPresenter" class="searchW"> </footer> 

我的控制器定義:

$scope.view = 'search/minView.html'; 

$scope.search = function() { 
    $scope.view = 'search/mainView.html'; 

    jQuery('html').click(function(event) { 
     $scope.view = 'search/minView.html'; 
     console.log($scope.view)    
    }); 
}; 

搜索功能用於只進入第一視圖包括:

<div class="..." ng-click="search()"> 
    <i class="search icon"></i> 
</div> 

但是,當我第一次點擊我剛剛加載的視圖,jQuery函數被執行(我將它看到控制檯中),而不是。

然後,當我點擊我網頁上的任何位置時,控制檯會顯示2條新行,而只有1個事件應該註冊到html內容上。

有什麼想法?

+0

因爲您在每次點擊時都保持綁定點擊事件。 ''jQuery('html')。click('不會覆蓋其他的單擊事件,它只是附加到一個*隊列*。 – epascarello

+0

你能提供一個小提琴還是plunk?如果你只在'search()'函數中綁定jquery ,是否有可能被調用兩次?將單擊綁定到'html'元素是奇怪的,你有沒有解綁它?如果不是,那麼當再次調用search()時你會再次綁定它。 –

回答

-1

你不應該在你的控制器的任何地方有jQuery。你已經有了一個ng-click事件,所以添加jQuery不僅是點擊事件的重複,而且完全不是Angular的做事方式。你的ng-click事件就是你需要改變$ scope變量的值。

$scope.view = 'search/minView.html'; 

$scope.search = function() { 
    $scope.view = 'search/mainView.html'; 
}; 
相關問題