gpt4 book ai didi

javascript - IE9 忽略 Angular 对象(在 ngRepeat 中)

转载 作者:行者123 更新时间:2023-11-28 02:00:06 25 4
gpt4 key购买 nike

我在 ng-repeat 中有一个 ng-includeng-controller,当 IE 看​​到重复的子实例对象:

在 main.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>

controllers.js 内部

function Main($scope) {

$scope.sidepanels = [
{
"controller": Alerts,
"icon": "icon-warning-sign"
}
];

}

function Alerts($scope,WebSocket) {
$scope.alerts = [];
WebSocket.on('…', function(data) { … });
WebSocket… //WebSocket is a Service
}

除了没有在控制台中抛出错误外,它只是默默地忽略了有时无法解析 panel 的事实。我只注意到是这种情况,因为我在 views/.html 上看到失败的 GET。

我检查了MSDN ,并且据说 IE 支持 name 属性。

最佳答案

属性 name 不能很好地用于 IE 上的函数。

您可以使用以下代码片段来检索函数的名称(如 here 所述):

func.toString().match(/^function ([^(\s]+)/)[1]

向创建模板路径的 Main Controller 添加一个函数,如下所示:

$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:http://jsfiddle.net/bmleite/faGRk/

关于javascript - IE9 忽略 Angular 对象(在 ngRepeat 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com