条件ng-class

时间:2016-04-29 10:43:16

标签: angularjs conditional ng-class

我试图将ng-class与条件一起使用,如下所示:

<li ng-repeat="time in matter.times_hourly | filter:searchText"  ng-class="{'time.write_off_class' : time.write_off === true, 'time.narrativeState' : time.write_off === false}" >
  • time.write_off_class里面有两个类,名为&#34; write_off_bg time_closed&#34;。

  • time.narrativestate里面有一个名为&#34; time_closed&#34;

  • 的班级
  • time.write_off是一个布尔值。

所以,我认为我的问题是引号。

我不确定把它们放在哪里,所以我尽力了:

  • 有条件的报价

    `ng-class="{time.write_off_class : 'time.write_off === true', time.narrativeState : 'time.write_off === false'}"`
    

结果:角度错误。

`angular.min.js:107 `Error: [$parse:syntax] http://errors.angularjs.org/1.4.5/$parse/syntax?p0=.&p1=is%20unexpected%2C%…20%3D%3D%20true'%2C%20time.narrativeState%20%3A%20'time.write_off%20%3D%3DNaNalse'%7D&p4=.write_off_class%20%3A%20'time.write_off%20%3D%3D%20true'%2C%20time.narrativeState%20%3A%20'time.write_off%20%3D%3D%false'%7D
  • 没有引号

ng-class="{time.write_off_class : time.write_off === true, time.narrativeState : time.write_off === false}"

结果:角度误差。

 angular.min.js:107 Error: [$parse:syntax] http://errors.angularjs.org/1.4.5/$parse/syntax?p0=.&p1=is%20unexpected%2C%…f%20%3D%3D%20true%2C%20time.narrativeState%20%3A%20time.write_off%20%3D%3DNaNalse%7D&p4=.write_off_class%20%3A%20time.write_off%20%3D%3D%20true%2C%20time.narrativeState%20%3A%20time.write_off%20%3D%3D%false%7D
  • 所有内容的报价(课程和条件):

    ng-class="{'time.write_off_class' : 'time.write_off === true', 'time.narrativeState' : 'time.write_off === false'}

结果:没有错误,但元素同时获得了类,write_off_class和narrativeState。

  • 关于课程的报价:

    ng-class="{'time.write_off_class' : time.write_off === true, 'time.narrativeState' : time.write_off === false}

结果:没有错误,显然元素得到了正确的类(在这种情况下,叙述状态,因为在代码的开头所有time.write_off都设置为FALSE)但是元素没有样式。如果我只把ng-class =&#34; time.narrativeState&#34;一切都还可以,但如果它通过ng-class,那么它就无法正常工作。

我做错了什么?是否有任何理由要求元素在'time.narrativeState'条件下没有样式,即使我确定它自己有效?

我一直在尝试更多的事情,我知道现在的主要问题在哪里,仍然无法解决。

我的目标&#39;时间&#39;我有两个字段用于为某些元素提供样式类。 &#34; time.narrativeState&#34;例如,有一个&#34; time_closed&#34;在它上面。

问题在于,当我写ng-class="time.narrativeState"并且我去看元素的风格时,我可以看到&#34; time_closed&#34;但是,如果我使用我在这个问题中讨论的条件ng-class="{{ time.write_off ? time.write_off_class : time.narrativeState }}" >该元素得到的样式不是&#34; time_closed&#34;它字面上是&#34; time.narrativeState&#34;因为time.narrativeState不是一个类而是一个对象的字段,所以它不会起作用。

为什么会得到&#34; time.narrativeState&#34;作为班级而且它没有在INSIDE time.narrativestate中找到正确的班级&#34; time_closed&#34; ???

1 个答案:

答案 0 :(得分:2)

您可以在简单插值标记内使用三元运算符:

ng-class="{{ time.write_off ? time.write_off_class : time.narrativeState }}"