javascript - 在 AngularJS 中,ui-view 加载的内容无法读取父内容中的 javascript 文件

标签 javascript html angularjs uiview angular-ui-router

我想在 index.html 中插入标题和导航栏

当标题和导航栏位于 index.html 中时,我的应用运行良好。

但是将这些文件分离成html并尝试加载,ui-view不加载脚本文件。

所以当ui-view加载header.html时登出功能不起作用

另一方面,css 效果很好。

我试着按照这样的答案

Angularjs does not load scripts within ng-view

html partial is not loaded into ui-view

但它并没有帮助解决我的问题..

为什么会出现这种情况?

请各位帅哥或者漂亮的开发者帮帮我..

这些是我的代码。

应用程序.js

'use strict';

var mainApp = angular
.module('adminApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'ui.router'
]);

mainApp.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/admin/login');
    $stateProvider
    .state('root',{
        url: '',
        abstract: true,
        views: {
            'headerContainer': {
                templateUrl: 'views/header.html',
                controller: 'HeaderCtrl',
                controllerAs: 'header'
            },
            'navContainer':{
                templateUrl: 'views/nav.html',
                controller: 'NavCtrl',
                controllerAs: 'nav'
            }
        }
    })
    .state('root.login', {
        ...
    })
});

index.html

<!DOCTYPE html>
<html ng-app="adminApp">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Admin</title>

    <base href="/">

    <!-- CSS-->
    <link href="bower_components/bootstrap/dist/css/main.css" rel="stylesheet">

    <!-- Font-icon css-->
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

    <!-- start: Favicon -->
    <link href="favicon.ico" rel="shortcut icon">
    <!-- end: Favicon -->

</head>
<body class="sidebar-mini fixed" ng-controller="AppCtrl">

<div class="wrapper">

    <div ui-view="headerContainer"></div>
    <div ui-view="navContainer"></div>

    <div ui-view="appContainer"></div>

</div>

<!-- Javascripts-->
<script src="../bower_components/bootstrap/dist/js/jquery-2.1.4.js"></script>
<script src="../bower_components/angular/angular.js"></script>
<script src="../bower_components/bootstrap/dist/js/bootstrap.js"></script>
<script src="../bower_components/angular-animate/angular-animate.js"></script>
<script src="../bower_components/angular-cookies/angular-cookies.js"></script>
<script src="../bower_components/angular-resource/angular-resource.js"></script>
<script src="../bower_components/angular-route/angular-route.js"></script>
<script src="../bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="../bower_components/angular-touch/angular-touch.js"></script>
<script src="../bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="../bower_components/bootstrap/dist/js/main.js" ></script>
<script src="scripts/app.js"></script>
<script src="scripts/controllers/headerCtrl.js"></script>
<script src="scripts/controllers/navCtrl.js"></script>

</body>
</html>

header.html

<header class="main-header hidden-print">
    <nav class="navbar navbar-static-top">
        <div class="navbar-custom-menu">
            <ul class="top-nav">
                <li>
                    <a ng-click="logout();">Logout</a>
                </li>
            </ul>
        </div>
    </nav>
</header>

headerCtrl.js

mainApp.controller('HeaderCtrl', function ($scope, $cookieStore) {

    $scope.logout = function () {
        angular.forEach($cookies.getAll(), function (v, k) {
            $cookies.remove(k);
        });     //  This is for remove all cookies
    };
});

主.js

$('.top-nav li a').on('click', function (e) {
    console.log('Clicked header li');
});

最佳答案

看起来你在调用logout方法时没有使用 Controller 别名

ng-click="header.logout();"

关于javascript - 在 AngularJS 中,ui-view 加载的内容无法读取父内容中的 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835350/

相关文章:

javascript - Recline.js 教程示例显示为空白。也许与Leaflet IE bug有关?

javascript - 如何使用 inline-block 使 div 缓慢移动

angularjs - 托管 angularjs 应用程序的最佳方式是什么?

javascript - Nodejs/mongodb 代码中的异步问题

php - 在 Zend Studio (Eclipse PDT) 中跨多个文件扩展的单个 JavaScript 对象的自动完成

php - 最大宽度在 IE 中不起作用

css - <div> 定位显示 :table-cell

javascript - AngularJS 部分中的 Google AdSense - 为什么更改 View 会以错误的尺寸显示广告?

angularjs - Pubnub AngularJS hereNow 函数 - 路由到不同的 View ?

javascript - 当 ToolTip 属性存在时更改 Bootstrap 弹出窗口标题