Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
angularjs中的控制器运行两次_Angularjs_Angular Ui Router_Angular Ui Router Extras - Fatal编程技术网

angularjs中的控制器运行两次

angularjs中的控制器运行两次,angularjs,angular-ui-router,angular-ui-router-extras,Angularjs,Angular Ui Router,Angular Ui Router Extras,我编写了一个教育页面,它有三个步骤:主页->所有书籍页面->每个书籍页面->单元页面 我使用下面的rout在它们之间进行切换,但当我直接进入每个页面,点击一个单元并进入单元页面时,单元控制器运行两次。我怎样才能避免跑两次 .state('education', { abstract:true , url: "/education", template: '<ui-view/>', data: {

我编写了一个教育页面,它有三个步骤:主页->所有书籍页面->每个书籍页面->单元页面 我使用下面的rout在它们之间进行切换,但当我直接进入每个页面,点击一个单元并进入单元页面时,单元控制器运行两次。我怎样才能避免跑两次

.state('education', {
        abstract:true ,
        url: "/education",
        template: '<ui-view/>',

        data: {
            breadcrumbProxy: 'education.main'
        }
    })

     .state('education.main', {

        url: "",
        templateUrl: "views/tut/education.html",
        controller:"educationCtrl",
         data: {
            displayName: 'آموزش بورس'
        },

        resolve:{
                titleOfPage: ['$stateParams', function($stateParams){
                        return $stateParams.titleOfPage = 'آموزش بورس';
                        }]
                }

      })

      .state('education.books', {
        abstract:true,
        url: "/books",  
        template: '<ui-view/>',
        data: {
            breadcrumbProxy: 'education.books.titles'
        }
      })
       .state('education.books.titles',{
        url:"",
        templateUrl: "views/tut/books.html",
        controller:"booksCtrl",
        data: {
            displayName: 'لیست کتاب ها'
        },
        resolve:{
                titleOfPage: ['$stateParams', function($stateParams){
                        return $stateParams.titleOfPage = 'لیست بخش ها';
                        }],
            }
      })

        .state('education.books.content',{
            abstract:true,
                url: "/:bookContentId", 
                template: '<ui-view/>',
                data: {
                    breadcrumbProxy: 'education.books.content.show'
            }

        })

         .state('education.books.content.show',{
                url:"",
                templateUrl: "views/tut/eachBook.html",
                controller:"showUnits",
                data: {
                    displayName: 'لیست بخش ها'
                },
                resolve:{
                        titleOfPage: ['$stateParams', function($stateParams){
                                return $stateParams.titleOfPage = 'لیست بخش ها';
                                }],
                        bookContentId: ['$stateParams', function($stateParams,bookContentId){
                        return $stateParams.bookContentId;
                                }]
                    }
        })

          .state('education.books.content.unit',{
                url:"^/education/books/:book/:unit",
                templateUrl: "views/tut/units.html",
                 controller:"unitDetail",

                data:{
                        displayName:'{{unitName}}',
                    },
                  resolve:{
                            unit: ['$stateParams', function($stateParams,unit){
                            return $stateParams.unit;
                                    }],
                            unitName: function($stateParams, newsService) {
                                 var st = $stateParams ;
                             return newsService.getUnitName($stateParams.unit).then(function(name){ 
                                    st.titleOfPage = name;                              
                                    return st.titleOfPage;
                                })
                            },
                            titleOfPage: function($stateParams, newsService) {
                                return $stateParams;
                            }
                    }

        })


          .state('education.books.content.unitrel',{
                url:"/:unit",
                templateUrl: "views/tut/units.html",
                 controller:"unitDetail",

                data:{
                        displayName:'{{unitName}}',
                    },
                  resolve:{
                            unit: ['$stateParams', function($stateParams,unit){
                            return $stateParams.unit;
                                    }],
                            unitName: function($stateParams, newsService) {
                                 var st = $stateParams ;
                             return newsService.getUnitName($stateParams.unit).then(function(name){ 
                                    st.titleOfPage = name;                              
                                    return st.titleOfPage;
                                })
                            },
                            titleOfPage: function($stateParams, newsService) {
                                return $stateParams;
                            }
                    }

        })

你能显示你的html吗?我想你已经将ng controller=yourController绑定到html中了。@Shohel我在视图中没有使用ng controller,所有的控制器都在JS中调用。你在父状态和子状态下都在使用该控制器吗?@AliGajani否。根据我在问题中粘贴的代码,父控制器是showUnits控制器。您在哪里调用了state,请编写该语法。