Javascript AngularJS状态和基于条件的动态模板
我想在我的项目中使用盎格鲁JS+UI路由器,它在THO中工作,但是我正处于这里的情况……/P> 我有一个url为Javascript AngularJS状态和基于条件的动态模板,javascript,html,angularjs,Javascript,Html,Angularjs,我想在我的项目中使用盎格鲁JS+UI路由器,它在THO中工作,但是我正处于这里的情况……/P> 我有一个url为/的主状态,该状态需要执行以下操作: 当用户未登录时,我希望显示一个完整的页面,其中包含一个登录表单和一些不同的index.html,因为我不需要一些列和内容 当用户登录时,应该使用默认的index.html,这样当用户登录时,我就可以使用我的ui视图网格系统和所有很酷的东西(导航栏、搜索表单以及index.html中的更多内容,因为它们必须在每个页面中显示) 为了检查用户是否已登录,
/
的主状态,该状态需要执行以下操作:
当用户未登录时,我希望显示一个完整的页面,其中包含一个登录表单和一些不同的index.html
,因为我不需要一些列和内容
当用户登录时,应该使用默认的index.html,这样当用户登录时,我就可以使用我的ui视图
网格系统和所有很酷的东西(导航栏、搜索表单以及index.html
中的更多内容,因为它们必须在每个页面中显示)
为了检查用户是否已登录,我有一个工厂AuthFactory.isUserLogged()
这是我所做的,但不是我想要的
index.html
<div ng-cloak="" ng-if="$root.globals.currentUser">
<div class="ui fixed inverted menu">
<div class="ui container">
<a class="header item" href=""><img class="logo" src="">Dashboard</a>
<a class="item">Link</a>
<div class="right menu">
<div class="ui dropdown icon item">
{{ $root.me.username }}
<div class="menu">
<a href="/settings" class="item">Settings</a>
<div class="divider"></div>
<a href="/logout" class="item">Logout</a>
</div>
</div>
</div>
</div>
</div>
<div class="pusher">
<div class="full height">
<div class="ui main container" ui-view="mainContainer"></div>
</div>
</div>
</div>
<div ng-cloak="" ng-if="!$root.globals.currentUser" ui-view="mainContainer"></div>
我知道这不是一个好的解决方案,这就是为什么我要求一个更好的解决方案
PS:我使用哪个index.html并不重要,我只是不需要在我的未登录主页中使用整个标记,只需要一个没有导航栏的简单登录表单
编辑:
这不起作用,即使是控制台.log
,它也不会输出任何内容
.state('home', {
url: '/',
views: {
'mainContainer': {
templateUrl: function (AuthFactory) {
if (AuthFactory.isUserLogged()) {
console.log("yep");
return 'views/main.html';
}
console.log("nope");
return 'views/login.html';
}
}
}
})
为登录和主页设置两种不同的状态。当用户未登录时,请在登录主页后调用登录状态。母版页上只有一个。 然后,为了在登录后进行后续转换,您需要在html主页上定义另一个
$stateProvider
.state('login',
{
url: '/login',
templateUrl: "Account/Login.html",
controller: 'LoginController'
})
.state('home',
{
url: '/home',
templateUrl: "Home/Home.html",
controller: 'HomeController'
})
我是angular的新手,我创建了一个你想要的网站,我在ng show中使用了两种状态,当用户登录时,显示主页,否则我会显示一个登录页面,这就是我现在所拥有的,但正如你所看到的,我的内容在相同的
ui视图中呈现(登录和未登录)我认为这可能会更好在我的情况下,我有一个ng视图,其中我有一个ui视图,带有login.html附件,另一个ui.view带有my home.html,我认为是值得的,抱歉,如果我不能帮助您更多:(将函数用作template@DanielLizik是的,我也这么想,但是控制器会发生什么呢?它也应该是一个不同的控制器,我可以在函数中以字符串的形式返回控制器吗?这是我以前拥有的,但我不想要/login
页面,如果我有选择的话,它必须与home相同…如果不好,也许我不需要o回滚并使用登录页面…如果您希望使用相同的视图,请使用IsLoggedin作用域使用ng show/ng hide。如果您可以在任何在线代码播放中共享您的内容,让我们在那里了解一下。
$stateProvider
.state('login',
{
url: '/login',
templateUrl: "Account/Login.html",
controller: 'LoginController'
})
.state('home',
{
url: '/home',
templateUrl: "Home/Home.html",
controller: 'HomeController'
})