我尝试将默认参数应用于网址(如果它们不存在)。接下来,我将URL params复制到局部变量($scope.params
),然后加载内容:
// If limit and sort params are defined
if ($location.search().hasOwnProperty('limit') && $location.search().hasOwnProperty('sort')) {
// Update scope params
$scope.params = $location.search();
// Load content
$scope.loadContent();
} else {
// Merge URL params and scope params; don't override URL params
$location.search(utilityFactory.mergeObjects($location.search(), $scope.params, false)); // REMEMBER THIS AS #1
// Replace browser history entry
$location.replace();
}
当我对$scope.params
进行更改以更新URL参数时,我调用了另一个函数:
$scope.updateParams = function () {
// Reset pagination
delete $scope.params.skip;
// Update URL params
$location.search($scope.params); // REMEMBER THIS AS #2
};
在#1中,控制器被初始化,控件进入if(){}
而不是else{}
。完善。但是,在#2中,$location.search()
不会刷新控制器。如果我使用$route.reload()
在#2之后强制重新加载,则控制器会初始化两次。
我做错了什么?