加载视图以查看问题 - AngularJS + ui.router

时间:2016-03-18 19:05:32

标签: javascript angularjs view loading

从其他视图(视图到视图)加载视图时遇到问题

问题:目标视图未接收到正确的数据以确定要显示的内容。

注意:使用ui.router

索引:

    <section ng-if="page.header" ng-class="{'transparent-header': page.transparentHeader}" user-header></section>

   <section ng-class="{'transparent-header': page.transparentHeader, 'create-event-back': page.background}" class="sec-full" ui-view></section>

   <section ng-if="page.footer" user-footer></section>

路由器:

.state('LoginPage', {
        url: "/login/",
        data: {
            name: "Login",
            header: false,
            footer: false,
            css: false,
            transparentHeader: false
        },
        templateUrl: "app/partials/common/loginPage.html",
        controller: "loginController"
    })

直接导航到视图时。一切都很好,但是当我从另一个视图导航时,ex:home view&gt;&gt;&gt;&gt;用户视图,不会评估包含导航栏的<section> ng-if )。

我不明白为什么。

更新 我发现了这个问题。发生的事情是: 当我导航到受限制的页面时,它会被重定向到登录页面。但$ state正在从限制页面获取数据。

这是我在日志中得到的:

Loigin页面状态:

Object {name: "Login", header: false, footer: false, css: false, transparentHeader: false}

限制页面状态:

Object {name: "Your Profile", header: true, footer: false, css: true, transparentHeader: true…}

控制器

.controller('appController', ['$scope','$state','$rootScope', function($scope,$state,$rootScope){

    //Control header and footer views getting data from router
    $rootScope.$on('$stateChangeStart', function(event, toState){ 
        $scope.page = toState.data;

    })
}]);

现在我的问题是如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

您正在传递数据,但您可能无法正确访问它! 在文档中,该示例指出,为了访问数据,您必须使用类似..

的语法
$state.current.data.transparentHeader

为了做到这一点,请确保将$ state对象注入控制器。

参见&#34;将自定义数据附加到状态对象&#34; https://github.com/angular-ui/ui-router/wiki