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>