ng-init不会在分页,angularjs中初始化数据

时间:2015-04-29 13:15:47

标签: angularjs pagination angularjs-ng-init

我正在使用angularjs和angular pagination来显示用户的详细信息。 在这里,我使用ng-init来初始化用户的年龄。如果用户的详细信息中存在年龄,则它将显示否则显示默认年龄10。 请参阅Plunker

ng-init第一次工作正常,但是当我转到下一页时,它没有显示默认年龄,即10。 例如:在第3页中,name是name30,没有年龄。所以,年龄应该来自默认年龄。

2 个答案:

答案 0 :(得分:1)

ngInit指令允许您评估当前范围中的表达式。您的方法存在的问题是,ngInit仅在创建范围时调用一次 - 因此它仅适用于第1页。

另请查看AngularJs documentation中的内容:

  

ngInit的唯一合适用途是对特殊属性进行别名处理   ngRepeat的内容,如下面的演示所示。除了这种情况,你应该   使用控制器而不是ngInit来初始化作用域上的值。

因此,基于此建议,最好在控制器中设置默认年龄值,如:

  // assign value on page change.
  $scope.loadRecord = function(page) {
    $scope.user = $scope.users[page-1];

    if (!$scope.user.age) {
      $scope.user.age = 10;
    }
  };

  // initial value
  $scope.loadRecord(1);

请查看此Plunker以便将其投入使用。

答案 1 :(得分:0)

删除ng-init逻辑&你也应该将UI逻辑移动到你的控制器

<强>标记

<h4>Limit the maximum visible buttons</h4>
<p> NAME: {{user.name}}</p>
AGE:  <input ng-model="user.age">

<强>代码

  // assign value on page change.
  $scope.loadRecord = function(page) {
    $scope.user = $scope.users[page - 1] || {};
    $scope.user.age = $scope.user.age || 10;
  };

  $scope.loadRecord(1); //default load 1st page

Working Plunkr