url params在`$ rootScope.Scope#$ digest`循环中清除

时间:2016-04-05 23:37:02

标签: angularjs angularjs-scope

我想对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());
    });
});

testA控制器

  $scope.updateDeparture = function(departure){
      $scope.departure_name = departure.name;
  }

  $scope.$watch("departure_name", function(newValue, oldValue) {
      $location.search("departure_name", newValue);
  });

1 个答案:

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