【问题标题】:Passing string to Angular expression from app.js从 app.js 将字符串传递给 Angular 表达式
【发布时间】:2018-01-03 01:42:25
【问题描述】:

我有这个功能,当满足某些条件时,它会重定向到登录页面。这部分工作正常,但我想在登录页面上显示一条消息,说明它们被重定向的原因。

目前我的 app.js 中有这个功能

app.run(function ($rootScope, $window) {
    $rootScope.$on('$routeChangeStart', function (event) {
        //stuff to evaluate
        if (stuff = true) {
            $rootScope.$evalAsync(function () {
                $scope.message = "test";
                $window.location.assign('#/login');
            });
        }
    });
});

我还有一个页面 login.html,其中有一个我想要我的消息的 div。

        <div ng-hide="message == ''" class="alert alert-danger">
            {{message}}
        </div>

我尝试将 $scope 添加到函数中,并访问 $scope.message,但我认为我不在正确的范围内。当我包含它时,该功能永远不会命中,但它没有。有什么方法可以访问这个 login.html 页面的范围吗?登录页面确实有它自己的控制器,但我需要能够从这个 app.js 页面重定向到那里。

感谢任何帮助!

【问题讨论】:

  • 如果您要将邮件附加到$scope,为什么不将其附加到$rootScope?这是一个始终可用的单例。我并不是说这是最好的策略,但它至少应该适用于测试。然后稍后您可以创建一个可以保存消息的单独服务。
  • @FrankModica 感谢您的帮助,效果很好。

标签: javascript jquery angularjs


【解决方案1】:

一旦您导航到新的状态登录,$scope 就会被重新实例化(重新创建),而不是使用 $scope,您应该使用 service/root$scope/localStorage 将值传递到下一页。 p>

使用 $rootScope 更改它,

 $rootScope.$evalAsync(function () {
         $rootScope.message = "test";
         $window.location.assign('#/login');
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多