'Javascript not working when use AngularJS ui-view
I have a main template (index.html) with an AngularJS ui-view. Inside this main template I import a bunch of Javascript files. I use AdminLTE 3.2 template for my AngularJS app (https://github.com/ColorlibHQ/AdminLTE/releases). When I click Products nav-item, it not showing nav-treeview item.
- The ui-view content loads just fine.
- If I copy/paste the content of baseView.html directly into index.html, everything works as expected.
What am I missing?
Views/Admin/index.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Dashboard</title>
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="~/Assets/admin/libs/font-awesome/css/all.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="~/Assets/admin/css/adminlte.min.css">
<link href="~/Assets/admin/css/custom.css" rel="stylesheet" />
</head>
<body class="hold-transition sidebar-mini" ng-app="tedushop" ng-controller="rootController">
<!-- Site wrapper -->
<div ui-view></div>
<!-- ./wrapper -->
<!-- jQuery -->
<script src="~/Assets/admin/libs/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script src="~/Assets/admin/libs/bootstrap/js/bootstrap.bundle.js"></script>
<!-- AdminLTE JS -->
<script src="~/Assets/admin/js/adminlte.js"></script>
<!-- Begin embed angularJS -->
<script src="~/Assets/admin/libs/angular.js/angular.js"></script>
<script src="~/Assets/admin/libs/angular-ui-router/angular-ui-router.js"></script>
<script src="~/app/app.js"></script>
<script src="~/app/components/home/rootController.js"></script>
<script src="~/app/components/home/homeController.js"></script>
</body>
</html>
app.js
(function () {
angular.module('tedushop',
['ui.router'])
.config(config);
config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {
$stateProvider
.state('base', {
url: '',
templateUrl: '/app/shared/views/baseView.html',
abstract: true
})
.state('home', {
url: '/admin',
parent: 'base',
templateUrl: '/app/components/home/homeView.html',
controller: 'homeController'
});
$urlRouterProvider.otherwise('/admin');
};
})();
app/components/views/baseView.html
<div class="wrapper">
<!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<!-- Brand Logo -->
<a href="#" class="brand-link">
<img src="/Assets/admin/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8">
<span class="brand-text font-weight-light">AdminLTE 3</span>
</a>
<!-- Sidebar -->
<div class="sidebar">
<!-- Sidebar Menu -->
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item">
<a href="javascript:void(0);" class="nav-link">
<i class="nav-icon fas fa-chart-pie"></i>
<p>
Products
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a ui-sref="product_categories" class="nav-link">
<i class="far fa-circle nav-icon"></i>
<p>List of products</p>
</a>
</li>
<li class="nav-item">
<a ui-sref="products" class="nav-link">
<i class="far fa-circle nav-icon"></i>
<p>Products</p>
</a>
</li>
</ul>
</li>
</ul>
</nav>
<!-- /.sidebar-menu -->
</div>
<!-- /.sidebar -->
</aside>
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<div ui-view></div>
</div>
<!-- /.content-wrapper -->
</div>
adminlte.js
/**
* --------------------------------------------
* AdminLTE Treeview.js
* License MIT
* --------------------------------------------
*/
/**
* Constants
* ====================================================
*/
var NAME = 'Treeview';
var DATA_KEY = 'lte.treeview';
var EVENT_KEY = "." + DATA_KEY;
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
var EVENT_EXPANDED = "expanded" + EVENT_KEY;
var EVENT_COLLAPSED = "collapsed" + EVENT_KEY;
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY;
var SELECTOR_LI = '.nav-item';
var SELECTOR_LINK = '.nav-link';
var SELECTOR_TREEVIEW_MENU = '.nav-treeview';
var SELECTOR_OPEN = '.menu-open';
var SELECTOR_DATA_WIDGET = '[data-widget="treeview"]';
var CLASS_NAME_OPEN = 'menu-open';
var CLASS_NAME_IS_OPENING = 'menu-is-opening';
var CLASS_NAME_SIDEBAR_COLLAPSED = 'sidebar-collapse';
var Default = {
trigger: SELECTOR_DATA_WIDGET + " " + SELECTOR_LINK,
animationSpeed: 300,
accordion: true,
expandSidebar: false,
sidebarButtonSelector: '[data-widget="pushmenu"]'
};
/**
* Class Definition
* ====================================================
*/
var Treeview = /*#__PURE__*/function () {
function Treeview(element, config) {
this._config = config;
this._element = element;
} // Public
var _proto = Treeview.prototype;
_proto.init = function init() {
$__default["default"]("" + SELECTOR_LI + SELECTOR_OPEN + " " + SELECTOR_TREEVIEW_MENU + SELECTOR_OPEN).css('display', 'block');
this._setupListeners();
};
_proto.expand = function expand(treeviewMenu, parentLi) {
var _this = this;
var expandedEvent = $__default["default"].Event(EVENT_EXPANDED);
if (this._config.accordion) {
var openMenuLi = parentLi.siblings(SELECTOR_OPEN).first();
var openTreeview = openMenuLi.find(SELECTOR_TREEVIEW_MENU).first();
this.collapse(openTreeview, openMenuLi);
}
parentLi.addClass(CLASS_NAME_IS_OPENING);
treeviewMenu.stop().slideDown(this._config.animationSpeed, function () {
parentLi.addClass(CLASS_NAME_OPEN);
$__default["default"](_this._element).trigger(expandedEvent);
});
if (this._config.expandSidebar) {
this._expandSidebar();
}
};
_proto.collapse = function collapse(treeviewMenu, parentLi) {
var _this2 = this;
var collapsedEvent = $__default["default"].Event(EVENT_COLLAPSED);
parentLi.removeClass(CLASS_NAME_IS_OPENING + " " + CLASS_NAME_OPEN);
treeviewMenu.stop().slideUp(this._config.animationSpeed, function () {
$__default["default"](_this2._element).trigger(collapsedEvent);
treeviewMenu.find(SELECTOR_OPEN + " > " + SELECTOR_TREEVIEW_MENU).slideUp();
treeviewMenu.find(SELECTOR_OPEN).removeClass(CLASS_NAME_IS_OPENING + " " + CLASS_NAME_OPEN);
});
};
_proto.toggle = function toggle(event) {
var $relativeTarget = $__default["default"](event.currentTarget);
var $parent = $relativeTarget.parent();
var treeviewMenu = $parent.find("> " + SELECTOR_TREEVIEW_MENU);
if (!treeviewMenu.is(SELECTOR_TREEVIEW_MENU)) {
if (!$parent.is(SELECTOR_LI)) {
treeviewMenu = $parent.parent().find("> " + SELECTOR_TREEVIEW_MENU);
}
if (!treeviewMenu.is(SELECTOR_TREEVIEW_MENU)) {
return;
}
}
event.preventDefault();
var parentLi = $relativeTarget.parents(SELECTOR_LI).first();
var isOpen = parentLi.hasClass(CLASS_NAME_OPEN);
if (isOpen) {
this.collapse($__default["default"](treeviewMenu), parentLi);
} else {
this.expand($__default["default"](treeviewMenu), parentLi);
}
} // Private
;
_proto._setupListeners = function _setupListeners() {
var _this3 = this;
var elementId = this._element.attr('id') !== undefined ? "#" + this._element.attr('id') : '';
$__default["default"](document).on('click', "" + elementId + this._config.trigger, function (event) {
_this3.toggle(event);
});
};
_proto._expandSidebar = function _expandSidebar() {
if ($__default["default"]('body').hasClass(CLASS_NAME_SIDEBAR_COLLAPSED)) {
$__default["default"](this._config.sidebarButtonSelector).PushMenu('expand');
}
} // Static
;
Treeview._jQueryInterface = function _jQueryInterface(config) {
return this.each(function () {
var data = $__default["default"](this).data(DATA_KEY);
var _options = $__default["default"].extend({}, Default, $__default["default"](this).data());
if (!data) {
data = new Treeview($__default["default"](this), _options);
$__default["default"](this).data(DATA_KEY, data);
}
if (config === 'init') {
data[config]();
}
});
};
return Treeview;
}();
/**
* Data API
* ====================================================
*/
$__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
$__default["default"](SELECTOR_DATA_WIDGET).each(function () {
Treeview._jQueryInterface.call($__default["default"](this), 'init');
});
});
/**
* jQuery API
* ====================================================
*/
$__default["default"].fn[NAME] = Treeview._jQueryInterface;
$__default["default"].fn[NAME].Constructor = Treeview;
$__default["default"].fn[NAME].noConflict = function () {
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
return Treeview._jQueryInterface;
};
exports.Treeview = Treeview;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
