Javascript 如何访问Angular JS template指令中设置的值,如“;ng级?&x201D;

Javascript 如何访问Angular JS template指令中设置的值,如“;ng级?&x201D;,javascript,angularjs,Javascript,Angularjs,前言:我正在寻找一个100%干净/原生的Angular JS解决方案来解决这个问题,它使用Angular JS框架本身的功能,而不是在DOM中搜索ng类值的乱七八糟的方法 我有一个模板,设置如下: <div class="stuff" ng-class="{ 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType]"> <div class="

前言:我正在寻找一个100%干净/原生的Angular JS解决方案来解决这个问题,它使用Angular JS框架本身的功能,而不是在DOM中搜索
ng类
值的乱七八糟的方法

我有一个模板,设置如下:

<div class="stuff" ng-class="{ 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType]">
<div class="stuff" ng-class="{ 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType]">
太棒了!但是,在我的控制器中,是否有任何方法可以直接获取
ng类中设置的值?我假设JSON被传递到Angular的内部,但是如果在控制器中,我可以计算我在模板中设置的值,那就太好了

我所要做的就是将
ng类
JSON blob放入控制器。目标是,如果我要在模板中设置多个类选项,比如那些键编号从
0
5
,然后我决定在CSS JSON中添加第6个选项,如果控制器本身能够独立计算关键点的数量,而不必调整模板中的一个值和控制器中的其他值,那就太好了


不管人们如何看待这种方法,有没有简单/干净的方法可以做到这一点?有没有一种方法可以做到这一点,即使用Angular逻辑本身,而不必创建一个乱七八糟的东西,在Angular之外用一个指令之类的东西搜索DOM?我正在寻找最干净、有棱角的本机解决方案,如果存在这样的解决方案

我不明白这是怎么回事,因为ng class指令不是这样工作的:

<div class="stuff" ng-class="{ 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType]">
<div ng-class="myJson">

$scope.myJson = { 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType];
<div class="stuff" ng-class="{ 0: 'default', 1: 'thing_1', 2: 'thing_2', 3: 'thing_3', 4: 'thing_4', 5: 'thing_5' }[thingType]">

我的意思是,ng类获取一个对象,首先声明类名,然后添加表达式(这通常是一个条件),如下所示(使用两个类):

//如果isActive为true,则将添加'default'类,并相应地添加'thing_1'

“…因为ng类指令不是这样工作的。”不正确。我的代码的工作方式是控制器设置一个值,比如
$scope.thingType=2
然后模板中的值使用
thing_2
并将其添加到DIV的主类中。这在以及中显示。正如在该网页上解释的那样,
ng class=“{object of key/value pairs}[expression to evaluate]”
。也没有不敬,但您的答案甚至没有接近于回答以下问题:即使我要设置
ng class=“{default:isActive,thing_1:isActiveThing1}”
,那么我是否可以访问控制器中的
{default:isActive,thing_1:isActiveThing1}
,以便查看所有这些值?这是我问题的核心:无论你认为什么是不正确的或正确的,都能在控制器中检索到
ng class
的值吗?我们不是来争论的,你认为我的答案无关紧要,你给了我分数,没问题,祝你好运。我也不是来争论的,但您的回答只是说明我的代码不起作用,当我清楚地说明它起作用并提供备份该方法的参考时,您甚至没有回答核心问题。在某种程度上解决了这个问题,所以也许您应该回顾一下,重新阅读我的评论,重新阅读我的问题,以了解所问的问题。可能不在控制器中(因为它属于DOM操纵(我认为)),但在指令中,我想您可以使用element.getAttribute('ng-class')进行操作?从那里你也许可以做一些骇客的事情?我不确定你想达到什么目的:)检查我更新的问题,该问题指出,出于所有意图和目的,在DOM中搜索
ng类
并返回它的黑客/混混并不是我想要的:我想要的是100%本机Angular JS解决方案(如果存在)。如果一个人不存在,他就不存在。
//this is going to add 'default' class if isActive is true and 'thing_1' accordingly
<div ng-class="{default: isActive, thing_1: isActiveThing1}"></div>