角度控制器被调用两次

Angular controller getting called twice

本文关键字:两次 调用 控制器      更新时间:2023-09-26

我看到有人问我这个问题,但我有点困惑。解决方案状态为删除其中一个控制器。因此,当我从body标记中删除ng controller=sigSearchResults时,我的结果不会填充在ng grid="gridOptions"中。如何纠正这种情况?

var sig = angular.module('sig', ['ngRoute']);
    sig.config([ '$routeProvider', function($routeProvider) {
        $routeProvider.when('/search/:sig', {
             template : ' ',
             controller : 'sigSearchResults'
        }).when('/', {
             template : ' ',
             controller : 'sigSearchResults'
        }).otherwise({
            redirectTo : '/'
        });
    } ]);
sig.controller('sigSearchResults', function($scope,$log,$http,$q,$routeParams, $window) {
    console.log($routeParams);
    //code that populates ng-grid to gridOptions element.
});

<html ng-app="sig">    
<body ng-controller="sigSearchResults">
<div class="contentContainer">
    <div ng-view></div>
    <!-- This is the template for the result -->
    <script type="text/ng-template" id="sig-search-result-id" >
    <div ng-show="loading" style='clear:both; text-align: center;'>Loading report...<img src="../media/images/Wait3.gif"></div>

    <div ng-show="!loading" class="gridStyle" ng-grid="gridOptions"></div>
    </script>
</div>

是的,从<body>标签中删除ng-controller="sigSearchResults",因为您正在使用$routeProvider配置路由和视图,并且看起来您的控制器不应该在顶级运行。

看起来你只缺少路线配置中的tempateUrl,即

when('/', {
     templateUrl: 'sig-search-result-id',
     controller: 'sigSearchResults'
})