tyoshikawa1106のブログ

- Force.com Developer Blog -

AngularJSのTemplateで使える機能

AngularJSのTemplateで使える機能について書籍などで確認してみました。

ngApp

ngAppを設定すると、自動でAngulerJSが実行されます。これは各htmlにつき、ひとつずづだけ設定してください。

ng-app="ApplicationModule"

ngBind

ngBindは指定してテキストを、設定したエレメントの値に置換します。htmlを指定した場合は、エレメントではなくテキストとなります。

<p ng-bind="hello.text"></p>
<div ng-bind="hello.html"></div>
<p>{{hello.text}}</p>
<div>{{hello.html}}</div>

ngBubdHtmlUnsafe

ngBindと同じく設定したエレメントの値を置換できます。ただしこの場合はhtmlはエレメントになります。

<div ng-bind-html-unsfe="hello.html"></div>

ngBindTempate

ngBindTemplateはAttributeに書かれたTemplateをエレメントとして展開します。

div ng-bind-template="{{name}} {{text}}"></div>

ngClass

ngClassは指定した変数の値「クラス名」を設定します。

<style>
  p {
    color: bule;
  }
  .red {
    color: red;
  }
</style>
<div ng-controller="HelloCtrl" ng-init="hello.class='red'">
  <p ng-class="hello.class">Hello, world!!</p>
</div>

ngCloak

ngCloakはアプリケーションがロードを完了するまで、設定したエレメントを非表示にします。Templateのコンパイルが終了したら、エレメントを表示します。また、この機能を使うには先にAnugularJSを読み込む必要があります。

<script src="angular.js"></script>
<div ng-controller="HelloCtrl">
  <p ng-cloak>Hello, world!!</p>
</div>

ngDisabled

ngDisabledは指定した変数の真理値に応じてdisabled属性を切り替えます。trueで無効化、falseで有効化。

<div ng-init="hello.disabled=true">
  <button ng-disabled="hello.disabled">Hello</button>
</div>

ngForm

ngFormをつかうことで、formの入れ子が可能になります。valiation,requiredなどのformチェックもできます。

<form name="outerForm">
  <div ng-form name="innerForm">
    <input type="text" name="text" required>
    <span ng-show="innerForm.text.$error.required">Required!!</span>
  </div>
</form>

ngHide

ngHideは指定した変数の真理値に応じて表示を切り替えます。

<p ng-hide="hello.hidden">Hello, world</p>

ngShow

ngHideの反対版

<p ng-show="hello.show">Hello, world</p>

ngHref

指定したTemplateの遷移先を展開・設定します。

<a ng-href="{{hello.link}}">Hello, Link!!</a>

ngInclude

設定したsrc属性を取得・表示します。

<div ng-init="hello.src='hello.html'">
  <div ng-include src="hello.html"></div>
</div>

ngInit

Templateが各地を利用して表示される前に、初期化処理として実行されます。

<div ng-init="hello.text='wow!!'; hello.name='world'">
  <p>{{hello.text}} {{hello.name}}</p>
</div>

ngList

配列を挿入するときに使います。

<input ng-list ng-model="names">{{names.length}}</input>

ngMultiple

select要素にmultile属性を付与します。

<select ng-multiple="hello.multiple">
  <option>hello</option>
  <option>hello</option>
  <option>hello</option>
</select>

ngNonBindable

htmlをそのまま返します。

<div ng-non-bindable>{{ 1 + 2}}</div>

ngPluraize

countに合わせて表示を切り替えできます。

Player 1:<input type="text" ng-model="player1" value="Yoshida"><br>
Player 2:<input type="text" ng-model="player2" value="Yamada"><br>
Number of Players:<input type="text" ng-model="playerCount" value="1">
<ng pluralize count="playerCount" when="{'0': 'Nobody.',
                                         'one': '1 player.',
                                         'other': '{} players.'}">
</ng-pluralize><br>

ngReadonly

readOnlyを切り替えます

<input type="text" ng-readonly="hello.read" value="hello, word">

ngRepeat

配列の変数を反復処理して展開できます

<ul>
  <li ng-repeat="person in people" ng-class="{first:$first, middle:$middle, last:$last}">Player {{$index+1}} - {{person.name}} {{person.age}} years</li>
</ul>

以下の変数が利用できるようになります。

$index
$first
$middle
$last

ngClassEven

ngRepeat中の偶数行に指定したclassを設定します。

ngClassOdd

ngRepeat中の奇数行に指定したclassを設定します。

ngSelected

select要素内のoption要素に設定すると、指定した変数がtrueの場合に設定したoption要素が選択状態になります。

<select ng-init="selected=true">
  <option>Hello</option>
  <option ng-selected="selected">Hello</option>
  <option>Hello</option>
</select>

ngSrc

srcと違い{{}}の部分をきちんと変換してくれる

<div>
  <img src="{{imgSrc}}" />
  <img ng-src="{{imgSrc}}" />
</div>

ngStyle

オブジェクトのkeyをstyle名、valueをstyleとしてエレメントに対してスタイルを設定します。

<div ng-init="colorstyle={color: 'green'}">
  <p ng-style="colorstyle">Hello world!!</p>
</div>

ngSubmit

formに設定すると、設定した関数を呼ぶことができます。action属性がある場合はそちらが優先されます。

<form ng-submit="submit()">
  <input type="text" name="text" ng-model="text">
  <input type="submit" value="submit">
  <p>Hello {{word}}</p>
</form>
var app = angular.module("Hello", []);
app.controller("HelloCtrl", function($scope){
  $scope.submit=function() {
    $scope.word = this.text;
  };
})

ngSwitch

DOMの表示/非表示を切り替えます。値がない場合は、ng-switch-defaultが表示されます。

<div ng-init="items={'hello', 'world', 'other'}; selection=items[0]">
  <select ng-model="selection" ng-options="item for item in items">
  </select>
  <div ng-switch on="selection">
    <div ng-switch-when="hello">Hello Div</div>
    <span ng-switch-when="world">World Soan</span>
    <p ng-switch-default>Hello world Default</p>
  </div>
</div>

ng-options

selectエレメントで設定することにより、optionエレメントが展開されます。optionにはArrayとObjectを指定できます。