我有一个选择标记:
<select
ng-model="department"
ng-options='option.id as option.name for option in data.deptCategories'
ng-init="department=data.usercurrentDeptID"
ng-change="change()" >
</select>
对象deptCategories
将包含所有部门。
和usercurrentDeptID
将拥有用户部门ID
所以我在页面加载时选择它。但是分页不起作用
当我从下拉菜单change()
看到其他部门的数据时,结果会很好,因为我预计会包括分页......!
有没有办法调用change()
函数来获取所选值的正确数据。
而不是改变下拉菜单。!有没有其他方法可以在选定的触发器时调用change()
函数。!
ng-init="department=data.usercurrentDeptID"
答案 0 :(得分:1)
如angular documentation中所述,如果以编程方式更改模型而不更改输入值,则不会评估更改。您可以使用$ scope。$ watch来处理模型更改时的更改。
$scope.$watch("department", function (newValue, oldValue) {
//handle changes
$scope.change();
});
使用$ scope。$ watch您将不需要更改为$ scope。$ watch将处理更改事件。
答案 1 :(得分:1)
我认为最简单的解决方案是让你的change()
调用一个函数,这将执行两项操作,设置部门当前正在执行的操作,以及调用ng-change
,因为这是什么是加载分页数据。您将保留ng-init
方法,因为这将处理下拉列表的后续更改,但新的<select
ng-model="department"
ng-options='option.id as option.name for option in data.deptCategories'
ng-init="initDepartment(data.usercurrentDeptID)"
ng-change="change()" >
</select>
方法将处理原始加载。
html的
// in your controller
$scope.initDepartment = function (currentDeptId) {
$scope.department = currentDeptId;
$scope.change();
}
的.js
{{1}}