gpt4 book ai didi

javascript - Angular Material 和 md-nav-bar 路由

转载 作者:行者123 更新时间:2023-11-30 11:46:25 25 4
gpt4 key购买 nike

我正在深入研究 Angular,并决定使用 Angular Material 库来协助我的第一个应用程序。到目前为止,我已经从 https://material.angularjs.org/1.1.0/demo/navBar 复制了一些非常基本的代码我已经对其进行了修改以满足我自己的需要。我在思考路由和 md-nav-items 时遇到了一些麻烦。

<html>

<head>
<title>PRT - CIT</title>
<meta name="viewport" content="width=device-width, initial-scale=1" </meta>
<!-- Angular Material style sheet -->
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"> </head>

<body ng-app="MyApp" id="bootstrap-overrides">
<div ng-controller="AppCtrl" ng-cloak="" class="navBardemoBasicUsage main">
<md-content class="md-padding">
<md-nav-bar md-selected-nav-item="currentNavItem" nav-bar-aria-label="navigation links">
<md-nav-item md-nav-click="goto('queue')" name="queue">Queue</md-nav-item>
<md-nav-item md-nav-click="goto('detail')" name="detail">Detail</md-nav-item>
<md-nav-item md-nav-click="goto('request')" name="request">Request</md-nav-item>
<!-- these require actual routing with ui-router or ng-route, so they won't work in the demo
<md-nav-item md-nav-sref="app.page4" name="page4">Page Four</md-nav-item>
<md-nav-item md-nav-href="#page5" name="page5">Page Five</md-nav-item>
--></md-nav-bar>
<div class="ext-content"> External content for `<span>{{currentNavItem}}</span>` </div>
</md-content>
</div>

<script src="node_modules/angular/angular.js"></script>
<script src="node_modules/angular-resource/angular-resource.js"></script>
<script src="node_modules/angular-animate/angular-animate.js"></script>
<script src="node_modules/angular-route/angular-route.js"></script>
<script src="node_modules/angular-aria/angular-aria.js"></script>
<script src="node_modules/angular-messages/angular-messages.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/t-114/svg-assets-cache.js"></script>
<script src="node_modules/angular-material/angular-material.js"></script>
<script src="js/site.js"></script>
<link rel="stylesheet" href="/css/site.css">
</body>

</html>

这是我的 JS:

(function () {
'use strict';
var MyApp = angular.module('MyApp', ['ngMaterial', 'ngMessages', 'material.svgAssetsCache', 'ngRoute']).controller('AppCtrl', AppCtrl);

function AppCtrl($scope) {
$scope.currentNavItem = 'queue';
}
MyApp.config(function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: '/index.html'
, controller: 'AppCtrl'
}).when('/queue', {
templateUrl: '/partials/queue.html'
, controller: 'AppCtrl'
}).when('/detail', {
templateUrl: '/partials/detail.html'
, controller: 'AppCtrl'
}).when('/request', {
templateUrl: '/partials/request.html'
, controller: 'AppCtrl'
});
});
})();

我有点不知道应该如何安排选项卡。根据我的阅读,md-nav-bar 内置了一些路由,但我发现了使用 ngRoute 以及 ui-router 的示例。

我也对在

中实际填充我的部分 View 感到困惑
<div class="ext-content"> External content for `<span>{{currentNavItem}}</span>` </div> 

我尝试使用 md-nav-href 而不是 md-nav-click 但它最终将我重定向到页面,而不是填充我的选项卡/导航栏下方的内容;我回滚了我写的 JS 和那部分 HTML。我已经阅读了我可以找到的该区域中发布的其他问题,但没有一个解决基于导航栏元素呈现不同部分的问题。有什么建议么?我在想我可以监视 currentNavItem 并根据它的值进行正确的部分渲染,但同样,我不确定如何实际进行渲染。

Here是一个Plnker,由于某种原因在预览中无法正确呈现,但代码与我在本地的代码相同。

Here是它在本地运行的样子的图像。

提前致谢!

最终编辑:

S/O @Searching 帮助我让它在下面工作。我已经更新了 plnker link以反射(reflect)变化。请注意,由于基本附加脚本,它变得有点迟钝。

最佳答案

ngRoute:当$route服务时你会需要ng-view容器。这将用于加载所有路由页面。

您没有 goto(),因此只需使用简单的 md-nav-href 标签即可导航。 currentNavItemmd-selected-nav-item 设置,这不是您需要的。让我们根据您的设置进行路由

index.html :将您的链接更新为如下所示。使用 md-nav-href

<md-nav-item md-nav-href="queue" name="queue">Queue</md-nav-item>

index.html :当使用 html5Mode 时,您将需要 base 标签。而不是手动指定它只需使用下面的脚本。确保在此脚本之前加载 angular.js。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.js"></script>    
<script type="text/javascript">
angular.element(document.getElementsByTagName('head')).append(angular.element('<base href="' + window.location.pathname + '" />'));
</script>

脚本:启用 html5molde,为什么……外面的资源太多了。我鼓励你查找 :)

MyApp.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true)
$routeProvider.when('/', {
templateUrl : 'index.html',
controller : 'AppCtrl'
}).when('/queue', {
templateUrl : 'queue_partial.html',//actual location will vary according to your local folder structure
controller : 'AppCtrl'
}).when('/detail', {
templateUrl : 'detail_partial.html',
controller : 'AppCtrl'
}).when('/request', {
templateUrl : 'request_partial.html',
controller : 'AppCtrl'
});
});

关于javascript - Angular Material 和 md-nav-bar 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876293/

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