我的应用程序是一个简单的AngularJS SPA,它本质上是一个联系人管理器:主(登陆)页面是一个人员列表,每行一个,在ng-repeat
循环中。
单击每个人都会显示详细信息页面:包含许多字段的表单。
目前我的路由器是这样的
app.config(function ($routeProvider) {
$routeProvider
...
.when('/', {
templateUrl: 'views/persons.html',
controller: 'PersonsController'
})
.when('/details/:personId', {
templateUrl: 'views/person.html',
controller: 'PersonsController'
})
...
});
即:一个控制器用于主人('人 s ')和细节('人')视图,以及两个单独的视图(当然)。
主视图中每行Detail page
的链接:
$location.path('/detail/' + id);
和详细信息视图中的Back to master page
链接执行:
$location.path('/');
这种方法(我认为这是“制度性”方法......)有许多缺点:
因为我的人名单很大(300人而且还在增长),每个人只有一张小图像,主页的加载速度非常慢(约5 - ~8秒),即使我保存服务中的$scope.persons
数组,以避免从服务器重新同步:慢慢是由于Angular,我想(浏览器几乎一直冻结......)。我还没有尝试优化我的代码(并减少$watch
es),我知道:-),但是......
当返回母版页时,滚动位置会丢失:视图从顶部显示,对于用户来说可能非常烦人......: - (
问题是:
你建议有更好的方法吗? (例如,只需更改模板视图,而不是更改位置...)
答案 0 :(得分:1)
每个{{ .. }}
,ng-
计数和ng-repeats
相乘,然后自动添加到观察者。所以,你需要寻找一次性角度,一次性绑定或角度js 1.3'一次性绑定语法{{::variable}}
根据您的存储库,您使用angular 1.3,因此您可以使用有角度的一次性绑定语法::,因此,您可以尝试将{{
更改为{{::
你真的不需要2路绑定。