我正在构建一个简单的搜索应用。搜索结果页面定义为:
.state('search', {
url: '/search?q',
templateUrl: 'views/search.html',
controller: 'SearchCtrl'
})
在SearchCtrl
中,我有两个范围函数来添加/删除搜索字词:
$scope.searchByTerm = function(term) {
termsService.addTerm($scope.selectedTerms, term);
$state.go($state.current, {q: $scope.selectedTerms}, {reload: true});
};
$scope.removeTerm = function(term) {
termsService.removeTerm($scope.selectedTerms, term);
$state.go($state.current, {q: $scope.selectedTerms}, {reload: true});
};
termsService.addTerm
函数只是将term
推入$scope.selectedTerms
数组,termsService.removeTerm
从数组中删除term
(如果存在)。由于我希望页面根据新的搜索字词重新加载和获取数据,因此我将reload
设置为true。
有了这个,SearchCtrl
有时会被启动两次,主要是$scope.selectedTerms
有两个或更多项目时。我已经尝试了所有可能的方法来重写它,它仍然一直运行两次。
如果我删除了两个函数中的termsService
行,则状态转换不会启动SearchCtrl
两次。
无法弄清楚可能出现的问题......
(angular-ui-router#0.2.11,angular#1.2.26)