AngularJS:ng-show添加CSS .ng-hide类太慢或执行ng-show函数后

时间:2016-09-20 22:20:04

标签: javascript css angularjs html5 coffeescript

我需要做什么:我需要根据显示和/或选择的其他部分和元素显示我的应用的各个部分。依赖规则的定义和维护可能变得复杂。

我当前的方法:我正在开发一个使用ng-show来显示它的某些HTML部分的应用。页面的其他部分可能取决于显示的部分与否。为了简单起见,我只需要使用自己的ID作为参数对每个部分进行ng-show,然后通过检查依赖项上的活动.ng-hide类来检查其依赖性是否满足。所以,为了说明一些事情,一些示例代码:

HTML:

<div id="SECTION/INIT">stuff</div>    
<div ng-show="sectionDisplay('SECTION/GENERAL')" id="SECTION/GENERAL">more stuff</div>
<div ng-show="sectionDisplay('SECTION/GENERAL2')" id="SECTION/GENERAL2">more stuff</div>

的CoffeeScript / JS:

sectionsDependencies =
  "SECTION/GENERAL": "SECTION/INIT" #GENERAL DEPENDS ON INIT (always shown)
  "SECTION/GENERAL2": "SECTION/GENERAL" #GENERAL2 DEPENDS ON GENERAL

sectionDisplay = (id) ->
  dependency = $document[0].getElementById(sectionsDependencies[id])
  classes = dependency.classList
  visible = !(classes.contains("ng-hide-active") || classes.contains("ng-hide-add") || classes.contains("ng-hide"))
  console.log "Visibility", visible, e.id, classes
  return visible

我的问题或我需要解决的问题: .ng-hide类检查似乎是从依赖性检查角度以不可靠的方式应用,当运行sectionDisplay函数时。有时在我检查它在依赖项上的使用后,它可以工作,其他时候.ng-hide类还没有应用,这当然不允许一致的应用程序行为。但是,类总是最终应用于HTML元素,这只是我不能依赖它。

知道为什么会发生这种情况或如何解决这个问题?想法,替代方法?

谢谢!

0 个答案:

没有答案