0

angularjs と angular pagination を使用して、ユーザーの詳細を表示しています。ここではng-init、ユーザーの年齢を初期化するために使用します。ユーザーの詳細に年齢がある場合は、それが表示されます。それ以外の場合は、デフォルトの年齢 10 が表示されます。Plunkerを参照してください。

ng-init最初は正常に動作しますが、次のページに移動すると、デフォルトの年齢 ie10 が表示されません。例: ページ 3 では、名前は name30 で、年齢はありません。したがって、年齢はデフォルトの年齢から取得する必要があります。

4

2 に答える 2

1

ngInitディレクティブを使用すると、現在のスコープで式を評価できます。あなたのアプローチの問題はngInit、スコープが作成されたときに一度だけ呼び出されるため、ページ1でのみ適切に機能することです.

また、 AngularJs のドキュメントに記載されている内容も確認してください。

ngInit の唯一の適切な使用法は、以下のデモに見られるように、ngRepeat の特別なプロパティをエイリアシングすることです。この場合以外に、ngInit ではなくコントローラーを使用して、スコープの値を初期化する必要があります。

したがって、この推奨事項に基づいて、次のようにコントローラーでデフォルトの age 値を設定することをお勧めします。

  // 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

働くプランカー

于 2015-04-29T13:40:33.220 に答える