具有主/详细视图的AngularJs SPA:“缓慢”方法

时间:2015-05-13 13:07:26

标签: javascript angularjs single-page-application

我的应用程序是一个简单的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),​​我知道:-),但是......

  • 当返回母版页时,滚动位置会丢失:视图从顶部显示,对于用户来说可能非常烦人......: - (

问题是

你建议有更好的方法吗? (例如,只需更改模板视图,而不是更改位置...)

1 个答案:

答案 0 :(得分:1)

每个{{ .. }}ng-计数和ng-repeats相乘,然后自动添加到观察者。所以,你需要寻找一次性角度,一次性绑定或角度js 1.3'一次性绑定语法{{::variable}}

根据您的存储库,您使用angular 1.3,因此您可以使用有角度的一次性绑定语法::,因此,您可以尝试将{{更改为{{::你真的不需要2路绑定。