这是小提琴:http: //jsfiddle.net/D5h7H/7/
它呈现以下内容:
<div ng-repeat="group in Model.Groups">
<span>{{group.Name}}</span>
<div ng-repeat="filter in group.Filters">
<input type="checkbox" ng-model="filter.enabled">{{filter.Name}}
<select ng-disabled="!filter.enabled">
<option ng-repeat="value in filter.Values">{{value}}</option>
</select>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它是从服务器加载到json中然后呈现给用户的过滤器列表(在一个例子中,json就是在Fiddle中生成的).目前有6组30个过滤器,每个过滤器有15个选项元素.
在Firefox中,现在需要大约2秒来重绘UI.
对于角度js,这个时间还可以吗?有没有什么我做错了导致2秒.渲染(因为2000元素对我来说看起来不是一个大数字,但2秒.肯定是大的)?
我有一个共享函数,它返回我的AngularJS应用程序中最顶层元素(文档)的范围.
function topScope() {
return angular.element(document).scope();
}
Run Code Online (Sandbox Code Playgroud)
这始终有效,我始终保证可以访问应用程序中的任何子范围(无论是在控制器内还是指令内).
这是我将用它的一个例子:
topScope().$emit('pageReady');
Run Code Online (Sandbox Code Playgroud)
现在我注意到$ rootScope的工作方式也一样.
$rootScope.$emit('pageReady');
Run Code Online (Sandbox Code Playgroud)
哪个也有效并达到同样的效果.但由于$ rootScope设计是"$范围现成的"范围则没有这仍然意味着它实际上是在页面的最上面的范围(创建将继承它的方法和属性的任何范围)?因此作为附加到文档节点的范围对象的父级?