2015-09-03 59 views

回答

3

是的,你可以做到這一點

比如你有你的底欄爲

<div>This is bottom bar<div> 

現在它改成

<div ng-hide="hideit">This is bottom bar<div> 

現在Home.html中的控制器只寫$rootScope.hideit = true;

任何你想在應用程序中保留底欄可見只是做$rootScope.hideit = false;

+0

控制器會是這樣嗎? '.controller('homeCtrl',function($ scope){ $ rootScope.hideit = true; })' –

+0

是的,它可以只做一個更改通過$ rootScope函數 例如使用函數($ scope,$ rootScope),你的底部欄必須包裝在ng-app – maddygoround

+0

尼斯。這使底部菜單欄脫離主頁。儘管如此,它現在已經消失了。我會在哪裏放置'$ rootScope.hideit = false;'?在app.js上? –

5

減$ rootScope

與$ rootScope的問題是,你將添加依賴關係你的代碼。 maddygoround的答案很好,但是你的index.html,home.html和控制器都會很難連接,而且變化會有點難。

爲了擺脫$ rootScope的,我會做以下修改:

<div ng-hide="hideit">This is bottom bar<div> 

這是maddygoround貼出相同的代碼,它做它應該做的。現在,您不會訪問home.html控制器並更改hideit,而是會爲路由的更改添加偵聽器。

下面的代碼可以添加到您的angular.module()聲明所在的文件中。

app.run(function($rootScope, $location){ 
    $rootScope.$on('$routeChangeStart', function(event, next, current){ 
    if ($location.path() == '/home') { 
     $rootScope.hideit = true; 
    }; 
    }); 
}); 

這將使您的index.html獨立於home.html控制器中發生的事情。這是更多的代碼,但可以在將來拯救你的生命。我試圖擺脫$ rootScope,如果可以的話,我會更新我的答案沒有$ rootScope。

+0

謝謝你的解釋! –

相關問題