0

我正在使用 angularjs 和角度分页来显示用户详细信息。在这里,我ng-init用来初始化用户的年龄。如果用户详细信息中有年龄,则会显示,否则显示默认年龄 10。请参阅Plunker

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

4

2 回答 2

1

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

另请查看AngularJs 文档中的内容:

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以使其发挥作用。

于 2015-04-29T13:44:08.633 回答
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

工作Plunkr

于 2015-04-29T13:40:33.220 回答