Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Search AngularJS搜索更改事件_Search_Angularjs - Fatal编程技术网

Search AngularJS搜索更改事件

Search AngularJS搜索更改事件,search,angularjs,Search,Angularjs,对于$location.search()变量,我需要一个类似于$routeChangeSuccess的事件。我正在调用$location.search('newview'),需要一种方法来知道它何时更改 谢谢 您应该使用$scope.$watch: $scope.$watch(函数(){return$location.search()},函数(){ //反应 }); 请参阅《角度》中有关$watch的更多信息 如果您只是想在查询字符串中添加“newview”,那么上面的代码就可以了 i、 e.

对于$location.search()变量,我需要一个类似于
$routeChangeSuccess
的事件。我正在调用$location.search('newview'),需要一种方法来知道它何时更改


谢谢

您应该使用
$scope.$watch

$scope.$watch(函数(){return$location.search()},函数(){
//反应
});
请参阅《角度》中有关
$watch
的更多信息

如果您只是想在查询字符串中添加“newview”,那么上面的代码就可以了

i、 e.来自
http://server/page
http://server/page?newvalue

但是,如果您正在“newview”中查找更改,则上述代码将不起作用

i、 e来自
http://server/page?newvalue=a
http://server/page?newvalue=b

您需要使用'objectEquality'参数调用$watch。这导致$watch使用值相等,而不是对象引用相等

$scope.$watch(函数(){return$location.search()},函数(){
//反应
},对);

注意添加了第三个参数(true)。

您可以在控制器中侦听$routeUpdate事件:

$scope.$on('$routeUpdate', function(){
   $scope.sort = $location.search().sort;
   $scope.order = $location.search().order;
   $scope.offset = $location.search().offset;
});

啊,你实际上可以在手表里使用一个功能。谢谢。请确保在调用$watch时使用“objectEquality”参数(第三个参数)。否则,它将检查对象引用的相等性,而不是按值。如果将“newview”添加到querystring中,$watch将起作用,但是如果更改了“newview”的值,$watch将不起作用。您不能这样做:$scope.watch($location.search,function(){…})不,您不能。$watch函数中的第一个参数是以$scope作为第一个参数和$location.search方法调用的,在这种情况下,参数不可能重复