我需要類似$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