控制器在状态转换时启动两次

时间:2014-10-26 06:17:42

标签: javascript angularjs angular-ui-router

我正在构建一个简单的搜索应用。搜索结果页面定义为:

.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)

0 个答案:

没有答案