我正在使用angularjs和angular pagination来显示用户的详细信息。
在这里,我使用ng-init
来初始化用户的年龄。如果用户的详细信息中存在年龄,则它将显示否则显示默认年龄10。
请参阅Plunker
ng-init
第一次工作正常,但是当我转到下一页时,它没有显示默认年龄,即10。
例如:在第3页中,name是name30,没有年龄。所以,年龄应该来自默认年龄。
答案 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