【问题标题】:AngularJs not updating view variableAngularJs 不更新视图变量
【发布时间】:2015-03-27 11:56:35
【问题描述】:

我在这里遇到了一种情况,我的网站是用 angularjs 构建的。我的整个路线都是通过角度管理的。成功登录后,我将用户重定向到仪表板页面。我在一个元素上有一个显示隐藏条件,现在停止工作。代码如下:

<div id="TilesController" ng-show="ShowTiles" ng-controller="TilesController">
                <div class="" id="tiles" ng-include src="'tiles.html'"></div>
            </div>

所以图块只对登录用户可见。登录后,瓷砖应该是可见的,我监听 routechangesuccess 事件并根据它进行更改,但它不起作用。

$scope.$on('$routeChangeSuccess', function(event, next, current) {
    if(userLoggedIn !== undefined){
        $scope.ShowTiles = true;
    }
});

但这并没有启用磁贴,但如果我 console.log($scope.ShowTiles); 它显示为 true。我尝试了 safeapply,但仍然没有帮助,但如果我刷新整个页面,它就会起作用。

【问题讨论】:

  • 您可能没有更新正确的范围。这个事件处理代码是在哪里定义的?
  • 离题:您应该使用ng-if 而不是ng-show,因为这不会渲染图块。否则,它们只是隐藏起来,用户可以轻松启用它们。
  • 你有这方面的 plnkr/fiddle 吗?

标签: angularjs angularjs-ng-show


【解决方案1】:

在控制器范围内添加 ng-show 指令怎么样?此时我不确定您是否正在更新 userLoggedIn 变量,您可能希望将其附加到 $scope。

  <div id="TilesController" ng-controller="TilesController">
                    <div ng-show="ShowTiles" id="tiles" ng-include src="'tiles.html'"></div>
                </div>

【讨论】:

  • 您是否将 userLoggedIn 绑定到 $scope?除了事件与 routeChangeSuccess 紧密相关,因此要触发它必须更改路由必须更改然后您不在同一个控制器中,不是吗?请提供一些代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2013-10-23
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多