我正在使用 angularjs 和角度分页来显示用户详细信息。在这里,我ng-init
用来初始化用户的年龄。如果用户详细信息中有年龄,则会显示,否则显示默认年龄 10。请参阅Plunker
ng-init
第一次工作正常,但是当我转到下一页时,它没有显示默认年龄 ie10。例如:在第 3 页中,名称为 name30,并且没有年龄。所以,年龄应该来自默认年龄。
我正在使用 angularjs 和角度分页来显示用户详细信息。在这里,我ng-init
用来初始化用户的年龄。如果用户详细信息中有年龄,则会显示,否则显示默认年龄 10。请参阅Plunker
ng-init
第一次工作正常,但是当我转到下一页时,它没有显示默认年龄 ie10。例如:在第 3 页中,名称为 name30,并且没有年龄。所以,年龄应该来自默认年龄。
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以使其发挥作用。
删除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