【问题标题】:Angular ng-class re-evaulateAngular ngclass 重新评估
【发布时间】:2015-03-14 14:24:03
【问题描述】:

当 collapseSidebar 设置为 true 时,我正在使用 ng-class 应用活动类,从而显示我的侧边栏。

<div class="row full-height row-offcanvas row-offcanvas-left" ng-class="{active: collapseSidebar}">
    <div id="sidebar" class="col-sm-4 col-md-3 col-lg-3 col-xl-2 sidebar-offcanvas">
    </div>

js

$scope.collapseSidebar = false;

    $scope.select = function(thing)
    {
        $scope.selectedThing = (thing !== $scope.selectedThing) ? thing : null;
        $scope.collapseSidebar = true;
    };

但是,可以通过其他方式隐藏侧边栏(单击左上角的菜单图标)删除活动的类。当我调用 select(thing) 时,我希望重新评估 ng-class 并重新应用“活动”类,但是这不会发生,我尝试将其设置为 false,然后直接返回 true这也不起作用。

即使值与 be 相同,我如何让 ng-class 重新评估 collapseSidebar 并应用 'active'

【问题讨论】:

  • 你能提供调用选择函数的代码吗?
  • 我们将不胜感激 - 如果没有现场案例追踪,您的问题几乎是不可能的。除此之外,关键部分似乎是:“(...)但是侧边栏可以以其他方式隐藏(...)删除活动的类”。最有可能的是,无论您以何种方式删除此类都是非 Angularish(可以这么说)——例如:不触发 Angular 摘要循环,因此不会导致它重新评估(更新)您视图中的所有内容。这在将 jQuery 与 Angular 一起使用时很常见 - tech.zumba.com/2014/08/02/angularjs-forget-jquery 。特别关注标题为“消化不良”的部分。
  • “很可能,无论您以何种方式删除此类都是非 Angularish(可以这么说)”这是正确的,它使用的是 jQuery,但是在这一点上,我不希望 angular 重新-评估。但是,当稍后调用 $scope.select() 时,它不会重新添加该类,可能是因为在 angular 之外删除了 active ,所以给人的印象是“active”应该已经存在了?
  • 最明显的答案是始终通过设置$scope.collapseSidebarng-click 来执行此操作?)来删除/添加此类,从不通过手动 DOM 操作.它有它的位置,但在与 Angular 一起工作时,有 10 次中有 9 次是潘多拉的盒子。如果没有活生生的例子,我只能说更多。

标签: javascript angularjs ng-class


【解决方案1】:

你试过了吗:

ng-class="{'active': collapseSidebar}"

(活动类名由“'”字符包裹)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 2016-10-15
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2010-10-07
    相关资源
    最近更新 更多