我需要类似$routeChangeSuccess
的事件,但需要为$ location.search()变量。我打电话给$ location.search('newview'),并需要知道它何时更改的方法。AngularJS搜索更改事件
谢谢!
我需要类似$routeChangeSuccess
的事件,但需要为$ location.search()变量。我打电话给$ location.search('newview'),并需要知道它何时更改的方法。AngularJS搜索更改事件
谢谢!
你应该使用$scope.$watch
:
$scope.$watch(function(){ return $location.search() }, function(){
// reaction
});
查看更多有关$watch
在角docs。
如果您只是想添加'newview',查询字符串上面的代码将工作。
即从
http://server/page
到http://server/page?newvalue
不过,如果你正在寻找“NewView的”改变上面的代码将无法正常工作。
即从
http://server/page?newvalue=a
到http://server/page?newvalue=b
您需要使用 'objectEquality' 参数去调用$观看。这会导致$ watch使用值相等,而不是对象引用相等。
$scope.$watch(function(){ return $location.search() }, function(){
// reaction
}, true);
注意添加了第三个参数(true)。
啊,你实际上可以在手表中使用一个函数。谢谢。 – 2013-02-14 20:23:53
请确保您在$ watch的调用中使用“objectEquality”参数(第3个参数)。没有这个,它会检查对象引用是否相等,而不是按值。如果将'newview'添加到查询字符串中,$ watch可以工作,但如果您更改'newview'的值则不起作用。 – 2014-04-23 13:34:58
我更新了提及objectEquality的答案。 – 2014-04-23 13:43:08
你可以在你的控制器监听$路由更新事件:
$scope.$on('$routeUpdate', function(){
$scope.sort = $location.search().sort;
$scope.order = $location.search().order;
$scope.offset = $location.search().offset;
});
的可能重复[AngularJs $收看$ location.search不工作时reloadOnSearch是假的(http://stackoverflow.com/questions/15093916/angularjs-watch-on-location-search-doesnt-work-when-reloadonsearch-is-false) – 2015-02-19 19:37:45