我有一个自定义指令(用于显示某些字段),在里面我有另一个指令(该字段的下拉框)。它在Chrome上运行良好,但在IE9上,ng-show
和ng-if
无法评估。它似乎甚至没有进入我定义的功能(我将console.log放在isAllowed函数中,它出现在Chrome中但不出现在IE9中)。
<div>
<select id="" class="form-control" ng-model="measure" name="{{name}}">
<option ng-if="isAllowed(name, 1)" value="1">Kilowatt Hours</option>
<option ng-if="isAllowed(name, 2)" value="2">mmBTU</option>
<option ng-if="isAllowed(name, 3)" value="3">Therms</option>
<option ng-if="isAllowed(name, 4)" value="4">Decatherms</option>
</select>
</div>
我尝试了ng-show
而不是ng-if
,它在IE9中的行为相同。似乎我在第一个指令上replace: true
在IE9中没有兑现:
然而在Chrome中,这会被周围的DIV
元素所取代,并且我的自定义指令在任何地方都看不到,这很好。
以前有没有人有这方面的经验?是否在指令内部有指令?好像IE9做第一个OK然后停止。
(我希望我可以删除IE9,但它是一个内部应用程序,它们仍然在IE9上无处不在,所以我必须让它以某种方式工作)。
PS:此处的目的是仅显示与给定字段相关的选项。在这种情况下,电可以以kWh和mmBTU测量,但不能在Therms和Decatherms中测量。 isAllowed函数内部应该是一些switch
逻辑。它在Chrome中工作正常,而不是IE9,所以我可能需要另一种方法作为解决方法。
PPS:Angular 1.3.2。 IE9 - 浏览器模式:IE9,文档模式:IE9标准。
答案 0 :(得分:0)
想出来。孤立的范围。某种程度上Chrome正在处理它,但IE9不是。
在我的应用程序中,我有我想要在Partials模块中定义的用户显示的字段,但下拉列表是我想在多个地方使用的东西,它们可能会更改,所以我在指令中定义它们名为BusinessRulesDirectives。
我需要做的就是将BusinessRulesDirectives作为我的Partials模块的依赖项,它适用于Chrome和IE9。
angular.module( 'ActualsPartials', [
'BusinessRulesDirectives'
] )
由于某些原因,Chrome可以正常运行,但IE9不喜欢它:
angular.module( 'ActualsPartials', [] )
此外,没有输出错误。我碰巧仔细检查了孤立的范围作为一个疯狂的猜测。
有兴趣知道为什么Chrome还行,但IE9却不行。