Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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
Javascript 控制器在状态转换时启动两次_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

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

Javascript 控制器在状态转换时启动两次,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在构建一个简单的搜索应用程序。搜索结果页面定义为: .state('search', { url: '/search?q', templateUrl: 'views/search.html', controller: 'SearchCtrl' }) 在SearchCtrl中,我有两个作用域函数来添加/删除搜索词: $scope.searchByTerm = function(term) { termsService.addTerm($scope.select

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

.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-router0.2.11,angular1.2.26

检查您的视图是否没有ng controller=SearchCtrl此处确实没有足够的信息来回答您的问题,并且在大多数情况下,X被窃听,但当我做一个不相关的Y时,它突然开始工作是一个误诊。您应该做的是提供一个工作示例检查您的问题。您可以共享视图/搜索吗。html@NewDev谢谢,我已经检查过了,我肯定没有。这是0.2.11中的一个bug