在 AngularJS 中处理自适应(与响应式无关)布局的首选方法是什么?我需要做的是使用不同的共享组件(共享指令和控制器)为桌面和移动设备提供不同的布局。我正在考虑使用 ui-router,这是我现在拥有的:
index.html(主文件):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.1/angular.js" data-semver="1.4.1"></script>
<script data-require="ui-router@0.2.15" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
<script src="app.js"></script>
</head>
<body data-ng-app="plunker" data-ng-strict-di>
<header>
<nav>
<ul>
<li><a data-ui-sref="mobile.user">Mobile</a></li>
<li><a data-ui-sref="desktop.user">Desktop</a></li>
</ul>
</nav>
</header>
<main data-ui-view>
</main>
</body>
</html>
desktop.html(桌面内容的包装器):
<h1>Desktop</h1>
<div data-ui-view>
</div>
mobile.html(移动内容的包装器):
<h1>Mobile</h1>
<div data-ui-view>
</div>
user.html(共享内容):
<div data-ng-controller="UserCtrl">
User name: {{name}}
</div>
应用程序.js
var app = angular.module('plunker', ['ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('mobile', {
abstract: true,
url: '/mobile',
templateUrl: 'mobile.html'
})
.state('mobile.user', {
url: '/user',
templateUrl: 'user.html'
})
.state('desktop', {
abstract: true,
url: '/desktop',
templateUrl: 'desktop.html'
})
.state('desktop.user', {
url: '/user',
templateUrl: 'user.html'
})
}]);
app.controller('UserCtrl', ['$scope', function($scope) {
$scope.name = 'John';
}]);
预览和编辑:
http://plnkr.co/edit/gRnTJkMa7hTLnffOERMT?p=preview
- 这是进行自适应布局的首选方式吗?
我怎么能(使用这种方法):
- 根据移动/桌面选择在 index.html 中添加一个类
- 动态加载 mobile.css 或 desktop.css
此致,