Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS状态和基于条件的动态模板_Javascript_Html_Angularjs - Fatal编程技术网

Javascript AngularJS状态和基于条件的动态模板

Javascript AngularJS状态和基于条件的动态模板,javascript,html,angularjs,Javascript,Html,Angularjs,我想在我的项目中使用盎格鲁JS+UI路由器,它在THO中工作,但是我正处于这里的情况……/P> 我有一个url为/的主状态,该状态需要执行以下操作: 当用户未登录时,我希望显示一个完整的页面,其中包含一个登录表单和一些不同的index.html,因为我不需要一些列和内容 当用户登录时,应该使用默认的index.html,这样当用户登录时,我就可以使用我的ui视图网格系统和所有很酷的东西(导航栏、搜索表单以及index.html中的更多内容,因为它们必须在每个页面中显示) 为了检查用户是否已登录,

我想在我的项目中使用盎格鲁JS+UI路由器,它在THO中工作,但是我正处于这里的情况……/P> 我有一个url为
/
的主状态,该状态需要执行以下操作:

当用户未登录时,我希望显示一个完整的页面,其中包含一个登录表单和一些不同的
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'
                })