我想对url params和FORM元素进行2-way
绑定。
我在$locationChangeSuccess
内放了一个断点,发现在$rootScope.Scope#$digest
周期内清除了网址参数
我想在$ scope.watch函数中修改$location.search
是错误点吗?
我该如何解决?感谢
app.run(function ($rootScope) {
$rootScope.$on('$locationChangeSuccess', function () {
debugger
console.log('$locationChangeSuccess changed!', new Date());
});
});
$scope.updateDeparture = function(departure){
$scope.departure_name = departure.name;
}
$scope.$watch("departure_name", function(newValue, oldValue) {
$location.search("departure_name", newValue);
});
答案 0 :(得分:0)
这里有2个选项,具体取决于您希望在参数更改时重新加载页面:
1)重装。您将params存储在对象中,观察它并且如果它更改使用$ state.go({param1:value1,...}) - 您应该在状态配置中定义所有参数。在初始阶段,你从$ stateParams
获取你的参数2)没有重装。在状态配置中,您指定reloadOnSearch:false并且必须具有类似mystate的URL?param1 = value1。 (对于ie mystate / value1不起作用)然后再次在init上你从$ stateParams中获取params并观察params来更新url。
但是在2中你还需要$ locationChangeSuccess来支持后退和前进按钮,以及用户直接更改url中的param。