AngularJSで双方向データバインディング|ng-modelとng-clickの実践的な使い方
AngularJSを使ったデータバインディングとイベント処理の基本を、実際のコード例とともに解説します。ng-modelとng-clickを組み合わせた動的な画面制御方法を学びましょう。
基本的なアプリケーションの設定
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body ng-controller="MainController as ctrl">
<!-- コンテンツ -->
</body>
</html>ng-modelの基本的な使い方
// コントローラの定義
angular.module('myApp', [])
.controller('MainController', function($scope) {
// モデルの初期化
$scope.user = {
name: '太郎',
age: 25,
isActive: true
};
});<!-- テキスト入力 -->
<input type="text" ng-model="user.name">
<p>名前: {{user.name}}</p>
<!-- チェックボックス -->
<label>
<input type="checkbox" ng-model="user.isActive">
有効状態: {{user.isActive ? 'ON' : 'OFF'}}
</label>
ng-clickを使ったインタラクティブな処理
// コントローラにメソッド追加
$scope.incrementAge = function() {
$scope.user.age++;
console.log('現在の年齢:', $scope.user.age);
};<button ng-click="incrementAge()">年齢を増加</button>
<p>年齢: {{user.age}}</p>
動的なリスト表示(ng-repeat)
$scope.products = [
{ id: 1, name: '商品A', price: 1000 },
{ id: 2, name: '商品B', price: 2000 },
{ id: 3, name: '商品C', price: 3000 }
];<ul>
<li ng-repeat="product in products">
{{product.name}} - {{product.price | currency:"¥"}}
</li>
</ul>
条件付き表示(ng-show/ng-hide)
<div ng-show="user.age >= 20">
<p>成人向けコンテンツを表示</p>
</div>
<div ng-hide="user.isActive">
<p>アカウントが無効です</p>
</div>
ベストプラクティス
- コントローラAs構文の使用推奨
- モデルオブジェクトの初期化を忘れずに
- $scopeの代わりにcontrollerAs構文を使用
- フィルターを活用したデータ整形
// controllerAs構文の例
.controller('MainController', function() {
var vm = this;
vm.user = { name: '花子' };
});よくあるエラーと対処法
- ng-modelのスコープ問題: 適切なドット記法を使用
- コントローラの依存関係注入: 配列構文または$injectを使用
- 非同期処理: $applyや$timeoutを適切に使用
まとめ
| ディレクティブ | 用途 | 使用例 |
|---|---|---|
| ng-model | 双方向データバインディング | <input ng-model=”value”> |
| ng-click | クリックイベント処理 | <button ng-click=”func()”> |
| ng-show | 条件付き表示 | <div ng-show=”condition”> |
実際に手を動かしながら、AngularJSのデータバインディングの仕組みを理解しましょう。公式ドキュメントやコミュニティリソースも積極的に活用してください。


ディスカッション
コメント一覧
まだ、コメントがありません