LoginSignup
8
7

More than 5 years have passed since last update.

さんじゃらっと Angular JS

Last updated at Posted at 2015-04-12

AngularJSとは

JavascriptベースのMVCフレームワークです
私のようにJSのライブラリはjQueryくらいしか使ったことがない人だと、クライアントサイドなのにコントローラーなどがでてきて驚きます

使う準備

1.ライブラリの読み込み

公式サイトの「Download」から入手するか、googleapisなどから読み込む。

html
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>

2.宣言

あとはおまじないがひとつ
htmlタグにng-appを追加する。これでhtmlタグで囲まれた部分にAngularJSを利用できます。
ng-はAngularJSを使う上でよく出てきます。

html
<html ng-app>

これでAngularJSを使う準備は完了です。
ng-appはモジュールを設定する際にng-app="myApp"のように使用します。

文字列の埋め込み

{{}}で囲まれた文字列はHTMLそのまま表示されます

index.html
<!DOCTYPE html>
   <html ng-app>
   <head>
     <meta charset="utf-8">
     <script type="text/javascript" src="js/angular.js"></script>
   </head>
   <body>
   {{'Hello, AngularJS!'}}
   </body>
</html>

変数の展開

{{}}では変数を展開したり、式を評価することもできます

index.html
<!DOCTYPE html>
   <html ng-app>
   <head>
     <meta charset="utf-8">
     <script type="text/javascript" src="js/angular.js"></script>
   </head>
     <body>
       <div ng-init="variable=42" />
       <div>
        {{variable}}
       </div>
       <div>
        {{ 1 + 1 }}
       </div>
   </body>
</html>

コントローラー

HTMLファイルでコントローラーを指定し、JSファイルでコントローラとスコープを宣言することでJSとHTMLを紐付けて変数や関数を利用できます

index.html
<!doctype html>
<html lang="ja" ng-app>
<head>
  <meta charset="UTF-8">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js"></script>
  <script type="text/javascript" src="app.js"></script>
</head>
<body>
  <div>
    <div ng-controller="FirstCtrl">
      <div>{{message}}</div>
      <button ng-click="action()">push</button>
    </div>
  </div>
</body>
</html>
app.js
function FirstCtrl ($scope) {
    $scope.message = 'Hello! World!!!';
    $scope.action = function () {
       $scope.message = 'Goodbye, Angular!!!';
    };
}

モデル

Inputタグにng-model属性を宣言すると、インタラクティブに変数を変更することができます。

index.html
<!DOCTYPE html>
<html ng-app>
<head>
  <meta charset="utf-8">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js"></script>
</head>
<body>
 <input type="text" ng-model="message">
  <div>
    {{message}}
  </div>
 </body>
</html>

イベント

AngularJSでイベントを貼るにはng-***="func()"のような属性を、イベントを設定したい要素に追加します。

index.html
<!DOCTYPE html>
<html lang="ja" ng-app>
<head>
  <meta charset="UTF-8">
  <title>ng-dblclick</title>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js"></script>
</head>
<body>
  <button ng-dblclick="dblClick=!dblClick">ダブルクリック</button>
  <div ng-show="dblClick">ダブルクリックされました!</div>
</body>
</html>

フィルター

AngularJSでは多くのフィルターが用意されていて、{{モデル名 | フィルター名}}で多くのフォーマットに変換できます。

index.html

<!DOCTYPE html>
<html lang="ja" ng-app="myApp">
<head>
  <meta charset="UTF-8">
  <title>date</title>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.js"></script>
</head>
<body ng-controller="myController">
<p>時:{{ today | date: 'yyyy年MM月dd日 HH時MM分ss.sss秒' }}</p>
<p>金:{{ 1000000 | currency }}</p>
<script>
  angular.module('myApp', []).controller('myController', ['$scope', function ($scope) {
    $scope.today = new Date();
  }]);
</script>
</body>
</html>

投稿フォームなどに使える機能は
さんじゃらっと Angular JS part2

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7