我的控制器中有很多过滤器。如果其中一个发生了变化,我想调用一个函数。
$scope.$watchCollection("[order, currentFilter, currentPage]", function(newValue, oldValue, scope) {
if(newValue === oldValue) return;
$scope.queryModel();
});
但是我想通过在其中添加特定于过滤器的逻辑来使回调变得更复杂:
$scope.$watchCollection("[order, currentFilter, currentPage]", function(newValue, oldValue, scope) {
if(newValue === oldValue) return;
$scope.queryModel();
if(/* order changed */) { /* do stuff */ }
});
所以我的问题是:从回调函数中找出哪个过滤器更改的最优雅的方法是什么?
提前谢谢。
答案 0 :(得分:0)
如果您不想编写多个if语句,可以执行以下操作:
$scope.$watchCollection("[order, currentFilter, currentPage]", function(newValue, oldValue, scope) {
if(newValue === oldValue) return;
var functionMap = {
order : function () { // do staff for the order filter },
currentFilter: function () { },
currentPage : function () { }
};
if (newValue)
{
functionMap[newValue.filterName]();
}
});