Javascript IE9忽略角度对象(在ngRepeat内)

Javascript IE9忽略角度对象(在ngRepeat内),javascript,html,internet-explorer-9,angularjs,Javascript,Html,Internet Explorer 9,Angularjs,我在一个ng repeat中有一个ng include和ng controller,IE在看到repeat的子实例对象时会随机丢弃自己: insidemain.html <section ng-repeat="panel in sidepanels"> <h2 class="twelve columns"> <span class="twelve"> <i class="icon {{panel.icon}}"></i

我在一个
ng repeat
中有一个
ng include
ng controller
,IE在看到repeat的子实例对象时会随机丢弃自己:

insidemain.html

<section ng-repeat="panel in sidepanels">
  <h2 class="twelve columns">
    <span class="twelve">
      <i class="icon {{panel.icon}}"></i> <!-- resolves properly -->
      {{panel.controller.name}} <!-- empty -->
    </span>
  </h2>
  <div
    ng-include src="'views/'+panel.controller.name.toLowerCase()+'.html'"
    ng-controller="panel.controller"
  ></div>
</section>
除了没有在控制台中抛出错误之外,它只是默默地忽略了这样一个事实,即它有时无法解析
面板
。我只注意到这种情况,因为我在
views/.html
上看到一个失败的GET


我检查了一下,认为IE支持
name
属性。

属性
name
对于IE上的函数来说效果不太好

您可以使用以下代码段检索函数名(如上所述):

将创建模板路径的函数添加到
Main
控制器,如下所示:

$scope.getTemplatePath= function(controller) {
    return 'views/' + angular.lowercase(controller.toString().match(/^function ([^(\s]+)/)[1] + '.html');    
};
在HTML上:

<div ng-include="getTemplatePath(panel.controller)" ng-controller="panel.controller"></div>


jsFiddle

警报是对象吗?您能否提供其内容(或示例)?是的,警报是一个对象(控制器功能)。我提供了处理websocket消息的方法。@b我很抱歉以前忘记标记您,因为我可以看到您的
警报
函数从服务器获取信息。我意识到你的代码是正确的。但是,在初始化模板时,您可能会将
panel.controller.name.toLowerCase()
的值设置为未初始化或为空。肯定是某些原因导致它为空或被忽略。我不认为在处理模板时,
警报
是未初始化的,因为
controllers.js
包含在我的文档头中,所以它应该早在angular包含模板文件之前就已经处理过了。谢谢!当我周一有机会访问IE时,我会检查这个。
$scope.getTemplatePath= function(controller) {
    return 'views/' + angular.lowercase(controller.toString().match(/^function ([^(\s]+)/)[1] + '.html');    
};
<div ng-include="getTemplatePath(panel.controller)" ng-controller="panel.controller"></div>