奇怪的ng级行为

时间:2014-04-21 08:19:10

标签: angularjs

我正在玩角度,遇到了ng-class指令的奇怪行为。这是我的应用模板:

<body ng-app>
  {{ isSidebarExpanded }}
  <div ui-view="sidebar" ng-class="{true:'expanded', false:'collapsed'}[isSidebarExpanded]"></div>
</body>

现在 - 当我在我的控制器中更改isSidebarExpanded时,第一行显示它的内容(这是真/假)没有任何问题,但在{{1}中使用它产生:

  

TypeError:undefined不是函数

我可以说它ng-class故障导致当我删除该部件时,它会抛出该错误。我不确定我的代码的哪一部分会对我有所帮助,因为它似乎让我很困惑。

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题,并通过创建一个简单的替代指令ng-class-alt暂时解决了这个问题,该指令在这种情况下执行相同的工作。请注意app是我的角度模块。

app.directive('ngClassAlt', function() {
  return {
    restrict: 'A',
    scope: {
      ngClassAlt: '=ngClassAlt'
    },
    link: function(scope, elm, attrs) {
      scope.$watch('ngClassAlt', function (newVal) {
        _.each(scope.ngClassAlt, function(val, key) {
          if(val)
            elm.addClass(key);
          else
            elm.removeClass(key);
        });
      }, true);
    }
  };
});

丑陋的AngularJS错误激励我找到丑陋的解决方案......希望这能帮到你。