Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs url参数已在“$rootScope.Scope#$digest”循环中清除_Angularjs_Angularjs Scope - Fatal编程技术网

Angularjs url参数已在“$rootScope.Scope#$digest”循环中清除

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

我想对url参数和表单元素进行双向绑定

我在
$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);
  });