Angularjs url参数已在“$rootScope.Scope#$digest”循环中清除
我想对url参数和表单元素进行双向绑定 我在Angularjs url参数已在“$rootScope.Scope#$digest”循环中清除,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我想对url参数和表单元素进行双向绑定 我在$locationChangeSuccess中放置了一个断点,发现url参数在$rootScope.Scope#$digest循环中被清除 我想在$scope.watch函数中修改$location.search 我怎样才能修好它?谢谢 app.run(function ($rootScope) { $rootScope.$on('$locationChangeSuccess', function () { debugger
$locationChangeSuccess
中放置了一个断点,发现url参数在$rootScope.Scope#$digest
循环中被清除
我想在$scope.watch函数中修改$location.search
我怎样才能修好它?谢谢
app.run(function ($rootScope) {
$rootScope.$on('$locationChangeSuccess', function () {
debugger
console.log('$locationChangeSuccess changed!', new Date());
});
});
测试控制器
根据是否要在参数更改时重新加载页面,此处有2个选项: 1) 重新加载。将参数存储在对象中,观察它,如果它发生更改,请使用$state.go({param1:value1,…})——您应该在state config中定义所有参数。在init上,从$stateParams获取参数 2) 无需重新加载。在状态配置中,指定reloadOnSearch:false,并且必须具有类似mystate?param1=value1的url。(不适用于mystate/value1)然后在init上再次从$stateParams获取参数,并观察该参数以更新url
但是在2中,您还需要$locationChangeSuccess来支持后退和前进按钮,以及用户直接更改url中的参数。您使用ui路由器吗?是的,我确实包括了ui路由器
$scope.updateDeparture = function(departure){
$scope.departure_name = departure.name;
}
$scope.$watch("departure_name", function(newValue, oldValue) {
$location.search("departure_name", newValue);
});