2017-09-18 53 views
0

好像AngularJS是反應在以下情形瘋狂:AngularJS - NG-如果和NG-顯示/ NG-隱藏表現瘋狂

當我提供了從另一個控制器的路線,一切行爲及模板顯示正確。但是,在瀏覽器中重新加載相同的路由(!)後,模板表現得很瘋狂,因爲ng-if和ng-show/ng-hide塊的行爲不正確。該模板涉及search() - 來自URL的變量(通過AngularJS獲取)。

可能是什麼問題?

在我的控制器:

$scope.excel = $location.search().excel; 

我選中此通過的console.log(),它是假的。但我的模板行事不當,我厭倦了從=== true= true等所有東西。

<div class="row" ng-hide="loading" ng-show="!excel && !tooMuchData"> 
+7

請提供一些代碼,很難理解發生了什麼 – Daniella

+0

爲什麼在同一元素上需要'ng-hide'和'ng-show'? – Pytth

+1

不要在同一個元素上使用ng-hide和ng-show。選擇一個或另一個。例如,'ng-show =「!loading &&!excel &&!tooMuchData」' –

回答

0

向我們提供附帶的代碼和/或Plunker來展示您的問題是有益的。

在這裏,我基於稀疏信息會猜測你提供:

控制器該視圖的不知何故狀態從你來自哪一個國家或進入時,其實事情已經傳遞給控制器​​的影響有那個狀態。

下面是幾個例子如何可能發生:

  1. 東西傳遞給控制器​​,當你改變了狀態。假設你列出你的色情影片的類別,並列出他們(/色情)。當您選擇某個類別(例如MILF)時,您將打開一個新視圖(輸入新的狀態並傳遞該類別的ID)。現在路線是/ porn/MILF然後您列出視頻。本節中的所有視頻現在都來自您通過路由器從前一狀態傳遞過來的Id類別。當你刷新該Id變得未知時,如果你沒有設置默認值,當從數據中過濾未知時,ut可以變得時髦。

  2. 您的控制器取決於$ rootScope中的某個屬性,該屬性在刷新時會重置。與上面相同的例子,但在某個地方選擇你說的類別。

$ rootScope.pickedCategory = '熟女'

現在嘗試做的東西與它的控制器,但它現在是個未知數。通常你應該停止濫用rootScope。

編輯:現在你提供了代碼ng-show和ng-hide在同一個對象上是一個可怕的想法,可能是問題的原因。

使用那些不在同一元素上的元素。

您可以隨時使用這個規則的條件:

條件你想成爲真正的 - A和條件,你想是假的 - B

等於:

條件你想成爲true一個& &!乙

條件你想爲假B & &!A

0

爲什麼在同一個div上同時使用ng-hideng-show。 ng-hide與ng-show相反,反之亦然。兩者都設置爲display: nonedisplay: block。也沒有提到你的loading參數。

僅僅使用ng-show!loading。 例如:ng-show= "!excel && !tooMuchData && !loading"

+0

談及ng-if,ng-show和ng-hide並不意味着我在同一個DOM元素中使用它們! – supereschek