选择ng-repeat选择选项值后如何调用函数

时间:2018-03-26 19:30:47

标签: angularjs angularjs-ng-repeat

我有一个选择标记:

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

2 个答案:

答案 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}}