指令内的自定义指令不会在IE9中触发

时间:2014-12-08 08:20:32

标签: angularjs internet-explorer

我有一个自定义指令(用于显示某些字段),在里面我有另一个指令(该字段的下拉框)。它在Chrome上运行良好,但在IE9上,ng-showng-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中没有兑现:

replacement does not appear to work

然而在Chrome中,这会被周围的DIV元素所取代,并且我的自定义指令在任何地方都看不到,这很好。

以前有没有人有这方面的经验?是否在指令内部有指令?好像IE9做第一个OK然后停止。

(我希望我可以删除IE9,但它是一个内部应用程序,它们仍然在IE9上无处不在,所以我必须让它以某种方式工作)。

PS:此处的目的是仅显示与给定字段相关的选项。在这种情况下,电可以以kWh和mmBTU测量,但不能在Therms和Decatherms中测量。 isAllowed函数内部应该是一些switch逻辑。它在Chrome中工作正常,而不是IE9,所以我可能需要另一种方法作为解决方法。

PPS:Angular 1.3.2。 IE9 - 浏览器模式:IE9,文档模式:IE9标准。

1 个答案:

答案 0 :(得分:0)

想出来。孤立的范围。某种程度上Chrome正在处理它,但IE9不是。

在我的应用程序中,我有我想要在Partials模块中定义的用户显示的字段,但下拉列表是我想在多个地方使用的东西,它们可能会更改,所以我在指令中定义它们名为BusinessRulesDirectives。

我需要做的就是将BusinessRulesDirectives作为我的Partials模块的依赖项,它适用于Chrome和IE9。

angular.module( 'ActualsPartials', [
    'BusinessRulesDirectives'
] )

由于某些原因,Chrome可以正常运行,但IE9不喜欢它:

angular.module( 'ActualsPartials', [] )

此外,没有输出错误。我碰巧仔细检查了孤立的范围作为一个疯狂的猜测。

有兴趣知道为什么Chrome还行,但IE9却不行。