我正在从事一个项目,该项目在很大程度上依赖angular来完成前端任务。在一个显示了大约50个带有ng repeat的条目的列表页面上,每个条目都有大量的观察者,因此我决定使用angular的静态绑定减少观察者的数量,并能够将数量从12k观察者减少到8k观察者,但即使在观察者数量大幅减少之后,加载时间、dom呈现或摘要周期时间也没有改善。digest cyle使用8k观察程序所需的时间与使用12k观察程序所需的时间几乎相同或稍多,因此angular的1次绑定在这里似乎没有帮助。我使用了chrome的角度扩展batarang和库ng stats。我想问的问题是:
1)为什么静态绑定/单向绑定不能提高性能
2)减少观察者的数量应该减少摘要周期并加快内容加载时间
3)在这种情况下,还有其他加快速度的技巧吗?(除了资产小型化)。
如果您减少4k的观察者数量。只需执行4k检查即可。如果你可以认为它们是简单的字符串值,那么少4000个字符串就没什么了。
关于ng repeat performance:如果未使用track by,则应使用它。Track by允许您指定列表中angular应检查以检测更改的唯一键。
如果您有大量数据,请务必小心您在$scope
中放置的内容,angular将监视存储在scope中的所有内容,如果您不需要其中一些数据(如内存中的一些巨大列表),则不应将其存储在$scope
中。当然,如果您使用controllerAs语法,这意味着您不应该将它们放入此
您的应用程序中可能存在一些瓶颈,您应该首先集中精力查找它们。
这样做的一个天真的方法就是评论/删除视图的某些部分并检查发生了什么。
另一个提示:你有一些代码看起来像:
$http().then(function(){
$http().then(function(){})
});
如果是,请检查您是否真的需要此功能,或者是否可以单独加载它们。如果需要执行多个请求并等待所有结果来执行分组流程,请使用$q.all([arrayOfPromise])。然后(函数([arrayOfResults]){})
我有一个自定义角度组件,用作具有过滤功能的下拉选择元素。输入是具有几个角度指令的基本输入元素: 上述输入负责打开下拉列表并允许用户键入,因为用户键入下拉列表元素中的数据会相应过滤。使用基本角度滤波器在控制器中进行滤波: 下拉元素如下所示: 所有工作正常,但是随着传递到组件中的项目数量的增加(100个项目)和下拉列表的相应增加,过滤速度很慢。这意味着当我键入一个字符时,下拉列表的过滤会滞后。 我知道
问题内容: 我对Angular.js范围有疑问。 首先,我是Angular的新手,我已经阅读了范围文档,并尽我所能来理解它。我觉得我的问题与此类似: ng-show不符合预期的绑定 但是,我的示例本质上更简单,我仍然不明白我所缺少的内容。 我的html非常简单,我有一个包装所有内容的控制器: 在其中,我有几个部分: 如您所见,我打算在将其应用于控制器时显示该部分。 我的应用程序逻辑如下: sect
MVVM就是在前端页面上,应用了扩展的MVC模式,我们关心Model的变化,MVVM框架自动把Model的变化映射到DOM结构上,这样,用户看到的页面内容就会随着Model的变化而更新。 例如,我们定义好一个JavaScript对象作为Model,并且把这个Model的两个属性绑定到DOM节点上: 经过MVVM框架的自动转换,浏览器就可以直接显示Model的数据了: 现在问题来了:MVVM框架哪家
我对Angular2还很陌生,我有一个小问题: 在我的Login-Component-HTML中,我有两个复选框,我希望以两种方式将它们绑定到login-component-typescript数据绑定。 这是HTML: 这是组件.ts: 如果我单击一个复选框,我会在控制器(组件)中获得正确的值。 但是如果更改组件中例如的值,则复选框不会“获取”新值。 因此我无法操作组件中的复选框(就像我想在组件
AngularJS自1.3.0-beta.10版本以来有一个新功能:“惰性一次性绑定”。 简单表达式的前缀可以是<代码>:: ,告诉angular在首次计算表达式后停止监视。给出的常见示例如下: 下面的表达式有类似的语法吗?