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>
app.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 を動的に読み込む
よろしくお願いします、