AngularJSのng-optionsを使ってSelectメニューを作成する方法をまとめました。
続きを読む
アーカイブ
Bootstrap3のサンプルOffcanvasのJavaScriptをAngularJSで書き換え
Bootstrap3のOffcanvasのサンプルのJavaScriptの機能をBootstrap3同梱のものからAngularJSに変更する手順をまとめました。
ここでは、以下のバージョンを使用して動作確認しています。
・Bootstrap:v3.3.7
・AngularJS:v1.6.5
・UI Bootstrap:v2.5.0
続きを読む
AngularJSでフォームの入力チェックを行い、動的にCSS追加
AngularJSのng-if、ng-show、ng-hideを使って表示、非表示を切り替え
AngularJSのng-class、ng-styleを使ってCSSを設定
AngularJSコードサンプル(ルート、flash)
AngularJS : 1.6.5
Bootstrap : 3.3.7
※v1.2.3のサンプルはこちら。
(1)routeChangeSuccessイベントを使ってflashメッセージ表示
{{getMessage()}}
<div ng-controller="MyCtrl">
<ul class="nav nav-pills">
<li><a href="#!/">ホーム</a></li>
<li><a href="#!/page">次ページ</a></li>
</ul>
<div class="bg-success" ng-show="getMessage()">
<b>flashメッセージ</b>
<p>{{getMessage()}}</p>
</div>
<ng-view></ng-view>
<script type="text/ng-template" id="home.html">
<h3>Home flashメッセージ送信テスト</h3>
<form ng-submit="submit(message)" class="form-inline">
<input type="text" ng-model="message" autofocus>
<button class="btn">コメント送信</button>
</form>
</script>
<script type="text/ng-template" id="page.html">
<h3>次ページ</h3>
</script>
</div>
var demoApp = angular.module('demoApp', ['ngRoute']);
demoApp.config(function($routeProvider) {
$routeProvider
.when("/home", { templateUrl: "home.html" })
.when("/page", { templateUrl: "page.html" })
.otherwise({ redirectTo: "/home" });
});
demoApp.controller("flashCtrl", function($scope, $location, $rootScope) {
var queue = [];
var currentMessage = "";
$scope.message = "テストコメント";
$rootScope.$on("$routeChangeSuccess", function() {
currentMessage = queue.shift() || "";
});
$scope.submit = function(message) {
queue.push(message);
$location.path("/page");
}
$scope.getMessage = function() {
return currentMessage;
}
});
AngularJSコードサンプル(ルート、flash v1.2.23)
AngularJS : 1.2.23
Bootstrap : 3.x
(1)routeChangeSuccessイベントを使ってflashメッセージ表示
{{getMessage()}}
<div ng-controller="MyCtrl">
<ul class="nav nav-pills">
<li><a href="#/">ホーム</a></li>
<li><a href="#/page">次ページ</a></li>
</ul>
<div class="bg-success" ng-show="getMessage()">
<b>flashメッセージ</b>
<p>{{getMessage()}}</p>
</div>
<ng-view></ng-view>
<script type="text/ng-template" id="home.html">
<h3>Home flashメッセージ送信テスト</h3>
<form ng-submit="submit(message)" class="form-inline">
<input type="text" ng-model="message" autofocus>
<button class="btn">コメント送信</button>
</form>
</script>
<script type="text/ng-template" id="page.html">
<h3>次ページ</h3>
</script>
</div>
var demoApp = angular.module('demoApp', ['ngRoute']);
demoApp.config(function($routeProvider) {
$routeProvider
.when("/home", { templateUrl: "home.html" })
.when("/page", { templateUrl: "page.html" })
.otherwise({ redirectTo: "/home" });
});
demoApp.controller("flashCtrl", function($scope, $location, $rootScope) {
var queue = [];
var currentMessage = "";
$scope.message = "テストコメント";
$rootScope.$on("$routeChangeSuccess", function() {
currentMessage = queue.shift() || "";
});
$scope.submit = function(message) {
queue.push(message);
$location.path("/page");
}
$scope.getMessage = function() {
return currentMessage;
}
});
AngularJSコードサンプル(カスタムディレクティブ)
AngularJS : 1.6.5
Bootstrap : 3.3.7
※v1.2.3のサンプルはこちら。
■目次
(1)基本的なカスタムディレクティブの作成方法
(2)子スコープ、隔離スコープの設定
(3)transcludeオプション、ng-transcludeディレクティブの使用例
(4)ディレクティブ内でコントローラを生成し、他のディレクティブで利用
(5)compile関数の使用例
(1)基本的なカスタムディレクティブの作成方法
1)カスタムディレクティブを使用しない場合
- {{item.product_name}} : {{item.price | number:0}}円
2)カスタムディレクティブを使用した場合
1)カスタムディレクティブを使用しない場合
<ol>
<li ng-repeat='item in products'>
{{item.product_name}} : {{item.price | number:0}}円
</li>
</ol>
2)カスタムディレクティブを使用した場合
<div products-list="products"></div>
var demoApp = angular.module('demoApp', []);
demoApp.controller("cus1Ctrl", function($scope) {
$scope.products = [
{product_name: "デジタルカメラ",price: 8500},
{product_name: "ノートパソコン",price: 39000},
{product_name: "テレビ",price: 15900},
{product_name: "ファンヒーター",price: 9800}
];
});
demoApp.directive("productsList", function () {
return {
link: function (scope, element, attrs) {
scope.data = scope[attrs["productsList"]];
},
scope: true,
template: "<ol><li ng-repeat='item in data'>{{item.product_name}} : {{item.price | number:0}}円</li></ol>",
restrict: "A"
}
});