Планкер: http://plnkr.co/edit/0efF1Av4lhZFGamxKzaO?p=preview
Ниже мой заголовок, есть ng-show="cornerLogo"
, который я хочу установить только true
в представлениях about, login и register, но false
в домашнем представлении.
<body id="body_id"
ng-app="myApp"
ng-controller="HomeCtrl">
<header>
<section ng-show="cornerLogo">
<h1><a href="index.html">Logo</a></h1>
</section>
<nav id="main_nav">
<ul>
<li><a ui-sref="about">About</a></li>
<li><a ui-sref="login">Sign In</a></li>
<li><a ui-sref="register">Create Account</a></li>
</ul>
</nav>
</header>
<ui-view></ui-view>
Так что это работает в моем HomeCtrl, потому что это главный контроллер на странице.
var app = angular.module('app-home', [])
.controller('HomeCtrl', ['$scope', function($scope) {
$scope.cornerLogo = false;
}]);
Однако, когда я переключаюсь на просмотр, вход или регистрацию, я теряю это $scope
Есть ли способ установить глобальную переменную где-нибудь в моем stateProvider для ui-router? Иначе как бы вы подошли к этому вопросу?
var app = angular.module('bitAge',
['ui.router',
'app-header',
'app-home',
'app-about',
'app-login',
'app-register'])
.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '_views/home.html',
controller: 'HomeCtrl',
})
.state('about', {
url: '/about',
templateUrl: '_views/about.html',
controller: 'AboutCtrl'
})
.state('login', {
url: '/login',
templateUrl: '_views/login.html',
controller: 'LoginCtrl'
})
.state('register', {
url: '/register',
templateUrl: '_views/register.html',
controller: 'RegisterCtrl'
});
// default view:
$urlRouterProvider.otherwise('/home');
}]);
HomeCtrl
дважды, сначала в домашнем состоянии, а также в тегеbody
- person levi   schedule 20.01.2015ui-view
? Интересно, что ты делаешь сng-controller="HomeCtrl"
? Весь ваш код кажется мне запутанным. Вы также не используетеui-sref
, что очень удобно. - person PSL   schedule 20.01.2015