2016-03-05 61 views
2

我有一個向上的箭頭上應該ng-hide如果this.showUpArrow等於假,ng-show如果this.showUpArrow等於假。 this.showUpArrow在頁面加載時設置爲false,並且當頁面頂部達到指定的div.offsetTop時,僅切換到true。一旦它達到div的罰款和花花公子,我就會知道它何時應該將布爾值變成true。問題在於,this.showUpArrow設置爲true時,我不希望它顯示<a>標籤。是什麼賦予了?切換<a>標記,而使用NG-隱藏/顯示故障和布爾

這是我的HTML ...

<a href='' id='up-arrow-link' ng-click='landingControl.goToAnchor("wrapper")'> 
    <img id='up-arrow' src='../static/images/uparrow.png' ng-hide='!landingControl.showUpArrow' ng-show='landingControl.showUpArrow'> 
</a> 

這裏是我的角度控制器...

myModule.controller('landingController', function($location, $anchorScroll, $window){ 
var _this = this; 
this.showUpArrow = false; 

    angular.element($window).bind("scroll", function() { 
     var elem = angular.element('#mystory')[0].offsetTop 
     var topOfScreen = $window.scrollY; 
     if (topOfScreen >= elem) { 
      _this.showUpArrow = true; 

     } 
    }); 
}) 

這是值得指出的landingControl部分我的ng-hideng-show聲明是參考我的控制器。我正在使用this方法而不是$scope方法。

回答

2

您需要使用$scope.apply$timeout來調用摘要循環。

$apply()用於從角度框架的外部執行角度表達式。 (例如,來自瀏覽器DOM事件,setTimeout,XHR或第三方庫)。因爲我們正在調用角度框架,所以我們需要執行適當的異常處理範圍生命週期,執行手錶。 1

這通常是在指令中完成的。

+0

謝謝,這似乎是我需要的。對我的目的是什麼類型的代碼會是什麼樣子? –

+0

https://docs.angularjs.org/guide/directive – georgeawg

+0

所以你是說我重新寫我的代碼的指令,並調用'。適用()'? –