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

Posted

技术标签:

【中文标题】加载视图以查看问题 - AngularJS + ui.router【英文标题】:Loading view to view problems - AngularJS + ui.router 【发布时间】:2016-03-18 19:05:32 【问题描述】:

从另一个视图(视图到视图)加载视图时遇到问题

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

注意:使用 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"
    )

直接导航到视图时。一切正常,但是,当我从另一个视图导航时,例如:主页视图 >>>> 用户视图,保存导航栏的 &lt;section&gt; 将不会被评估( ng-if )。

我不明白为什么。

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

这是我在日志中得到的:

登录页面状态:

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】:

您正在正确传递数据,但您可能没有正确访问它! 在文档中,示例说明为了访问数据,您必须使用类似.. 的语法

$state.current.data.transparentHeader

为此,请确保您也将 $state 对象注入到您的控制器中。

请参阅“将自定义数据附加到状态对象”部分 https://github.com/angular-ui/ui-router/wiki

【讨论】:

我发现了问题。我正在获取数据,但由于重定向,数据正在发生变化。我会更新我的问题。看看

以上是关于加载视图以查看问题 - AngularJS + ui.router的主要内容,如果未能解决你的问题,请参考以下文章

angularjs ui-route:仅更改 1 个嵌套视图并保存其他视图以防止重新加载

重新渲染视图而不重新加载/刷新 AngularJS 应用程序

高效快速地加载 AngularJS 视图|TW洞见

加载 angularjs 视图后加载 jquery 模块?

AngularJS - 动画回调/序列

单击后在 AngularJS 中切换视图