gpt4 book ai didi

javascript - 用户返回时 Controller 初始化逻辑未命中

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:15 24 4
gpt4 key购买 nike

所以我正在使用 angular 制作一个网页,并且在里面我有一些选项卡,这些选项卡在我的页面的主要部分设置了 ng-view。每次页面加载不同的 View 时,我都想运行一些逻辑来进行设置。我遇到的奇怪问题是,当用户加载网页或刷新时,这工作正常,但如果他们转到一个选项卡,然后按浏览器上的后退按钮,新的 ng-view 加载但 Controller 逻辑未调用再次。我知道正在加载 Controller ,但 Controller 根目录中的逻辑并未运行。我已经尝试为 stateChangeSuccess 和 viewContentLoaded 添加一个范围监视,当用户按下返回时,这两个都不会运行。

Controller

 myApp.controller('RootCtrl',  function($scope, $location) {



$scope.$watch('viewContentLoaded', function(){
Console.log("this is only hit once also");
});

Console.log("this is only hit once");
});

这被注入(inject)到我的 html 正文的顶部并且在每个选项卡中

应用设置

myApp = angular.module('myApp', ['ngRoute','ui.bootstrap']);

myApp.config([
'$routeProvider','$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider


.when('/home',{
templateUrl: '../templates/home.html',
controller: 'other'
})

.when('/myOtherPage',{
templateUrl: '../templates/page1.html',
controller: 'otherCtrl',
css: 'royaltyOverrides.css'
})

.when('/myOtherPage2',{
templateUrl: '../templates/page2.html',
controller: 'otherCtrl',
})
.otherwise({redirectTo:"/home"}
);

$locationProvider.html5Mode(true);
}
]);

最佳答案

让我们澄清一些概念:

  • 'RootCtrl' 是一个父 Controller ,一旦被 ngController 指令调用就会加载
  • $scope.$watch()监视任何范围变量,并且 viewContentLoaded 不是代码中显示的其中之一。
  • $viewContentLoaded 是一个发出的事件,因此您可以通过 $on 监听方法,它会在您每次更改 View 并加载 View 时发出,它是 DOM 和指令。

请在 RootCtrl Controller 中尝试以下代码:

$scope.$on('$viewContentLoaded', function(event) {
// you logic code goes here
});

关于javascript - 用户返回时 Controller 初始化逻辑未命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com