Angularjs 从ng类内部访问特定于div的变量
对于我的一个项目,我有一个带有三个条件ng类的div,看起来像:Angularjs 从ng类内部访问特定于div的变量,angularjs,ng-class,Angularjs,Ng Class,对于我的一个项目,我有一个带有三个条件ng类的div,看起来像: <div name="type" ng-class="{'class-one' : stringVariable != "type", 'class-two': stringVariable == "type" && booleanTrue, 'class-three': stringVariable == "type" && !booleanTrue}">My type div.<
<div name="type" ng-class="{'class-one' : stringVariable != "type", 'class-two': stringVariable == "type" && booleanTrue, 'class-three': stringVariable == "type" && !booleanTrue}">My type div.</div>
<div name="type" ng-class="{'class-one' : stringVariable != $this.name, 'class-two': stringVariable == $this.name && booleanTrue, 'class-three': stringVariable == $this.name && !booleanTrue}">My type div.</div>
我的类型div。
这是我希望它运行的方式,问题是当我有几个div使用相同的功能时:
<div name="type" ng-class="{'class-one' : stringVariable != "type", 'class-two': stringVariable == "type" && booleanTrue, 'class-three': stringVariable == "type" && !booleanTrue}">My type div.</div>
<div name="date" ng-class="{'class-one' : stringVariable != "date", 'class-two': stringVariable == "date" && booleanTrue, 'class-three': stringVariable == "date" && !booleanTrue}">My date div.</div>
<div name="name" ng-class="{'class-one' : stringVariable != "name", 'class-two': stringVariable == "name" && booleanTrue, 'class-three': stringVariable == "name" && !booleanTrue}">My name div.</div>
我的类型div。
我的约会部门。
我叫迪夫。
同样,这是可行的,但似乎效率低下且笨拙。每次一个div使用这个功能时,我最终都不得不更改每个ng类表达式中的变量,而任何未来的重构都将是底层的一大难题
我试图找到一种方法,在div中定义一个变量,然后在ng类中使用它,例如:
<div name="type" ng-class="{'class-one' : stringVariable != "type", 'class-two': stringVariable == "type" && booleanTrue, 'class-three': stringVariable == "type" && !booleanTrue}">My type div.</div>
<div name="type" ng-class="{'class-one' : stringVariable != $this.name, 'class-two': stringVariable == $this.name && booleanTrue, 'class-three': stringVariable == $this.name && !booleanTrue}">My type div.</div>
我的类型div。
不幸的是,也许很明显,这是行不通的
有没有办法让这类事情奏效
- 注1:如果不可能,我将通过控制器定义类,但我真的希望找到一种方法使其通过ng类工作
- 注2:如果可能,我希望避免使用外部指令
<div name="type" ng-class="{'class-one' : isValidForType()}"
最后,答案是,正如Tushar所建议的,将所有逻辑移到一个单独的函数中,并以这种方式返回ng类名 因此,我们在模板中有:
<div ng-class="myMethod("type")">
这似乎是创建您自己的指令的好时机。@ryanyyu但我不想…:'(更严重的是,我觉得奇怪的是,没有办法做像
这样的事情,我会认为这类事情是基本的和有用的。你也可以在控制器中定义对象,然后像
那样绑定,但这基本上是元素指令最好封装的。这似乎是一个好的解决方案。尽管h在ng类中,您可以简单地调用函数并在逻辑中返回类名,如ng class=“isValidForType('type')”
我不知道这是如何工作的,抱歉:/在我的示例中,我有三个具有不同名称的div,每个具有三个ng类。我是否要将isValidForType()放在对于每个ng类,在每个div中?好的,我知道了。在接受它之前,我将在未来几天详细介绍一下这个答案注意:我试图将此作为@Tushar答案的编辑,但被拒绝了。