AngularJS
ビルトインディレクティブ
サーチ…
角括弧 - テキストと数値
この例では、input要素にtype="text"
およびtype="number"
を使用すると、角式がどのように評価されるかを示しています。次のコントローラとビューを考えてみましょう。
コントローラ
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
ビュー
<div ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="textInput.value">
{{ textInput.value + 5 }}
<input type="number" ng-model="numberInput.value">
{{ numberInput.value + 5 }}
</div>
- テキスト入力にバインドされた式で
+
を使用すると、演算子は文字列を連結し(最初の例)、画面に55*
表示します。 - 数値入力にバインドされた式で
+
を使用すると、演算子は数値の和を返し(2番目の例)、画面に*
表示します*
。
*
- ユーザーが入力フィールドの値を変更するまでです。その後、表示がそれに応じて変更されます。
ngRepeat
ng-repeat
は、配列またはオブジェクトを繰り返し処理できるようにする、Angularの組み込みディレクティブです。コレクション内の各アイテムに対して要素を一度繰り返すことができます。
ng-配列を繰り返す
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
場所:
item =コレクション内の個々のアイテム
itemCollection =反復処理する配列
ng-オブジェクトを繰り返す
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
場所:
key =プロパティ名
value =プロパティの値
myObject =反復しているオブジェクト
あなたのng-repeatをユーザ入力でフィルタリングする
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
場所:
searchText =ユーザーがリストをフィルタリングするテキスト
stringArray =文字列の配列(例: ['string', 'array']
フィルター出力にas aliasName
というエイリアスを割り当てることによって、他の場所でフィルターされた項目を表示または参照することもできます。
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText as filteredStrings">
{{string}}
</li>
</ul>
<p>There are {{filteredStrings.length}} matching results</p>
ng-repeat-startおよびng-repeat-end
開始点と終了点を定義して複数のDOM要素を繰り返すには、 ng-repeat-start
およびng-repeat-end
ディレクティブを使用します。
<ul>
<li ng-repeat-start="item in [{a: 1, b: 2}, {a: 3, b:4}]">
{{item.a}}
</li>
<li ng-repeat-end>
{{item.b}}
</li>
</ul>
出力:
- 1
- 2
- 3
- 4
常にng-repeat-start
をng-repeat-end
することが重要です。
変数
ng-repeat
は、これらの変数も式の中に公開します
変数 | タイプ | 詳細 |
---|---|---|
$index | 数 | 現在の反復のインデックスと等しくなります($ index === 0は最初の反復要素で真と評価されます; $first 参照してください) |
$first | ブール | 最初の反復要素で真と評価する |
$last | ブール | 最後の反復要素で真と評価する |
$middle | ブール | 要素が$first と$last 間にある場合、trueに評価されます。 |
$even | ブール | 偶数番目の反復で真と評価します( $index%2===0 相当) |
$odd | ブール | 奇数番目の反復で真と評価されます( $index%2===1 と同等) |
パフォーマンスの考慮事項
特に大規模なコレクションを使用する場合、 ngRepeat
レンダリングが遅くなることがあります。
コレクション内のオブジェクトに識別子プロパティがある場合、オブジェクト全体ではなく識別子で常にtrack by
する必要があります。これはデフォルトの機能です。識別子が存在しない場合は、常に組み込み$index
使用でき$index
。
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
ngRepeatの範囲
ngRepeat
は常に独立した子スコープを作成するので、親スコープを繰り返し内でアクセスする必要がある場合は注意が必要です。
ここでは、 ngRepeat
内のクリックイベントから親スコープの値を設定する方法を示す簡単な例を示します。
scope val: {{val}}<br/>
ctrlAs val: {{ctrl.val}}
<ul>
<li ng-repeat="item in itemCollection">
<a href="#" ng-click="$parent.val=item.value; ctrl.val=item.value;">
{{item.label}} {{item.value}}
</a>
</li>
</ul>
$scope.val = 0;
this.val = 0;
$scope.itemCollection = [{
id: 0,
value: 4.99,
label: 'Football'
},
{
id: 1,
value: 6.99,
label: 'Baseball'
},
{
id: 2,
value: 9.99,
label: 'Basketball'
}];
ng-click
でval = item.value
だけがあった場合、隔離されたスコープのために親スコープのval
は更新されません。そのため、親スコープは$parent
参照またはcontrollerAs
構文(たとえば、 ng-controller="mainController as ctrl"
)でng-controller="mainController as ctrl"
ます。
ネストされたng-repeat
ネストされたng-repeatを使用することもできます。
<div ng-repeat="values in test">
<div ng-repeat="i in values">
[{{$parent.$index}},{{$index}}] {{i}}
</div>
</div>
var app = angular.module("myApp", []);
app.controller("ctrl", function($scope) {
$scope.test = [
['a', 'b', 'c'],
['d', 'e', 'f']
];
});
ここでは、子ng-repeat内の親ng-repeatのインデックスにアクセスするために、 $parent.$index
使用できます。
ngShowとngHide
ng-show
ディレクティブは、渡された式が真か偽かに基づいてHTML要素を表示または非表示にします。式の値が偽であれば、それは隠れます。真実ならばそれは表示されます。
ng-hide
ディレクティブは似ています。ただし、値が偽であればHTML要素が表示されます。表現が本当なら、それはそれを隠すでしょう。
コントローラ :
var app = angular.module('app', []);
angular.module('app')
.controller('ExampleController', ExampleController);
function ExampleController() {
var vm = this;
//Binding the username to HTML element
vm.username = '';
//A taken username
vm.taken_username = 'StackOverflow';
}
ビュー
<section ng-controller="ExampleController as main">
<p>Enter Password</p>
<input ng-model="main.username" type="text">
<hr>
<!-- Will always show as long as StackOverflow is not typed in -->
<!-- The expression is always true when it is not StackOverflow -->
<div style="color:green;" ng-show="main.username != main.taken_username">
Your username is free to use!
</div>
<!-- Will only show when StackOverflow is typed in -->
<!-- The expression value becomes falsy -->
<div style="color:red;" ng-hide="main.username != main.taken_username">
Your username is taken!
</div>
<p>Enter 'StackOverflow' in username field to show ngHide directive.</p>
</section>
ngOptions
ngOptions
は、モデルに格納される配列からアイテムを選択するためのhtmlドロップダウンボックスの作成を簡単にする指示です。 ngOptions属性は、ngOptionsの理解式を評価して得られた配列またはオブジェクトを使用して、 <select>
要素の<option>
要素のリストを動的に生成するために使用されます。
ng-options
すると、マークアップをselectタグだけに減らすことができ、ディレクティブは同じselectを作成します:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
ng-repeat
を使用してselect
オプションを作成select
方法もありますが、for ng-repeat
forEach
だけをループさせるような一般的な目的のためにng-repeat
を使用することはお勧めしません。 ng-options
は特にselect
タグオプションを作成select
ためのものです。
上の例ではng-repeat
を使用しています
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
上記の例もいくつかの変形例を含めて詳細に示しています。
この例のデータモデル:
$scope.fruit = [
{ label: "Apples", value: 4, id: 2 },
{ label: "Oranges", value: 2, id: 1 },
{ label: "Limes", value: 4, id: 4 },
{ label: "Lemons", value: 5, id: 3 }
];
<!-- label for value in array -->
<select ng-options="f.label for f in fruit" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
効果:
f.label
は<option>
ラベルになり、値にはオブジェクト全体が含まれます。
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option value="4"> Apples </option>
効果:
f.value
(4)はラベルが同じである間のこの場合の値になります。
<!-- label group by group for value in array -->
<select ng-options="f.label group by f.value for f in fruit" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
効果:
オプションはそのvalue
基づいてグループ化されvalue
。同じvalue
を持つオプションは1つのカテゴリに分類されます
<!-- label disable when disable for value in array -->
<select ng-options="f.label disable when f.value == 4 for f in fruit" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
効果:
disable when f.value==4
、 disable when f.value==4
の条件のため、 "Apples"と "Limes"は無効になります(選択できません)。 value=4
すべてのオプションは無効にする
<!-- label group by group for value in array track by trackexpr -->
<select ng-options="f.value as f.label group by f.value for f in fruit track by f.id" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option value="4"> Apples </option>
効果:
trackBy
を使用しているときは視覚的な変化はありませんが、Angularは参照ではなくid
による変更を検出します。
<!-- label for value in array | orderBy:orderexpr track by trackexpr -->
<select ng-options="f.label for f in fruit | orderBy:'id' track by f.id" ng-model="selectedFruit"></select>
選択時に生成されるオプションタグ:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
効果:
orderBy
はAngularJSの標準フィルタで、オプションを昇順(デフォルト)に並べるので、 id
= 1であるため、この中の「オレンジ」は1番目に表示されます。
ng-options
を含むすべての<select>
はng-model
添付されている必要がng-options
。
ngModel
ng-modelでは、任意のタイプの入力フィールドに変数をバインドできます。 {{myAge}}
、二重中括弧を使用して変数を表示できます。
<input type="text" ng-model="myName">
<p>{{myName}}</p>
入力フィールドに入力するか、何らかの方法で変更すると、パラグラフの値が即座に更新されます。
この場合のng-model変数は、 $scope.myName
としてコントローラ内で使用できます。 controllerAs
構文を使用している場合:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
ng-controller属性で定義されているコントローラのエイリアスをng-model変数にあらかじめ保留することによって、コントローラの有効範囲を参照する必要があります。この方法では、ng-model変数を参照するためにコントローラに$scope
を挿入する必要はなく、コントローラの関数内でthis.myName
として変数を使用できます。
クラス
ユーザーのステータスを表示する必要があり、使用できるCSSクラスがいくつかあるとします。 Angularは、条件を含むオブジェクトリストを指定できるいくつかのクラスのリストから選択することを非常に簡単にします。角度は、条件の真実性に基づいて正しいクラスを使用することができます。
オブジェクトにはキーと値のペアが含まれている必要があります。キーは、値(条件付き)がtrueと評価されたときに適用されるクラス名です。
<style>
.active { background-color: green; color: white; }
.inactive { background-color: gray; color: white; }
.adminUser { font-weight: bold; color: yellow; }
.regularUser { color: white; }
</style>
<span ng-class="{
active: user.active,
inactive: !user.active,
adminUser: user.level === 1,
regularUser: user.level === 2
}">John Smith</span>
Angularは$scope.user
オブジェクトをチェックして、 active
ステータスとlevel
番号を表示します。これらの変数の値に応じて、Angularは一致スタイルを<span>
適用します。
ngIf
ng-if
はng-show
と似ていますが、単純にng-show
するのではなく、DOMから要素を挿入または削除します。 Angular 1.1.5では、ng-If命令が導入されました。 ng-ifディレクティブを1.1.5以上のバージョンで使用できます。これはAngularが削除されたng-if
内の要素のダイジェストを処理しないため、特に複雑なデータバインディングのng-if
、Angularの作業負荷を軽減するng-if
便利です。
ng-show
とは異なり、 ng-if
ディレクティブはプロトタイプ継承を使用する子スコープを作成します。つまり、子スコープのプリミティブ値を設定することは親には適用されません。親スコープのプリミティブを設定するには、子スコープの$parent
プロパティを使用する必要があります。
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
ビュー
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
currentUser
が未定義の場合のDOM
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
currentUser
が未定義の場合のDOM
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
機能の約束
ngIfディレクティブは、論理的にtrueまたはfalseを返す必要がある関数も受け入れます。
<div ng-if="myFunction()">
<span>Span text</span>
</div>
スパンテキストは、関数がtrueを返す場合にのみ表示されます。
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Angular式のように、この関数は任意の種類の変数を受け入れます。
ngMouseenterとngMouseleave
ng-mouseenter
およびng-mouseleave
ディレクティブは、イベントを実行したり、DOM要素の中に出入りするときにCSSのスタイルを適用したりするのに便利です。
ng-mouseenter
ディレクティブは、マウスがマウスイベントを入力する式を実行します(このディレクティブが存在するDOM要素の上にマウスポインタをng-mouseenter
と)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
上記の例では、ユーザーがdiv
にマウスをapplyStyle
がtrue
に変わり、 ng-class
で.active
CSSクラスが適用されます。
ng-mouseleave
ディレクティブは、マウスexitイベントの1つの式を実行します(このディレクティブが存在するDOM要素からマウスカーソルを離したとき)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
最初の例を再利用すると、ユーザーがマウスポインタをdivから離した.active
クラスが削除されるようになりました。
ngDisabled
このディレクティブは、特定の既存の条件に基づいて入力イベントを制限するのに便利です。
ng-disabled
ディレクティブは、真実か偽の値かを評価する正規表現を受け入れ、表現します。
ng-disabled
は、 input
要素にdisabled
属性を条件付きで適用するために使用されます。
HTML
<input type="text" ng-model="vm.name">
<button ng-disabled="vm.name.length===0" ng-click="vm.submitMe">Submit</button>
vm.name.length===0
は、 input
の長さが0の場合はtrueに、ボタンを無効にする場合はng-click
クリックイベントを発生させない
ngDblclick
ng-dblclick
ディレクティブは、ダブルクリックイベントをDOM要素にバインドする場合に便利です。
このディレクティブは式を受け取ります
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
上の例では、ボタンをダブルクリックすると、 input
保持されている値がインクリメントされます。
組込みディレクティブチートシート
ng-app
AngularJSセクションを設定します。
ng-init
デフォルトの変数値を設定します。
ng-bind
{{}}テンプレートの代わりに使用します。
ng-bind-template
複数の式をビューにバインドします。
ng-non-bindable
データがバインド可能でないことを示します。
ng-bind-html
HTML要素の内部HTMLプロパティをバインドします。
ng-change
ユーザーが入力を変更したときに、指定された式を評価します。
ng-checked
ボックスを設定します。
ng-class
cssクラスを動的に設定します。
ng-cloak
AngularJSが制御を開始するまでコンテンツを表示しないようにします。
ng-click
要素がクリックされたときにメソッドまたは式を実行します。
ng-controller
ビューにコントローラクラスを接続します。
ng-disabled
フォーム要素のdisabledプロパティを制御します
ng-form
設定する
ng-href
AngularJS変数をhref属性に動的にバインドします。
ng-include
外部HTMLフラグメントをフェッチ、コンパイル、およびページへの組み込みng-include
使用します。
ng-if
式に応じてDOM内の要素を削除または再作成する
ng-switch
一致する式に基づいて条件付きで制御を切り替えます。
ng-model
input、select、textareaなどの要素をmodelプロパティでバインドします。
ng-readonly
要素に読み取り専用属性を設定するために使用します。
ng-repeat
新しいテンプレートを作成するために、コレクション内の各項目をループするときに使用します。
ng-selected
要素に選択されたオプションを設定するために使用します。
ng-show/ng-hide
式に基づいて要素を表示/ ng-show/ng-hide
表示します。
ng-src
AngularJS変数をsrc属性に動的にバインドします。
ng-submit
角度式をonsubmitイベントにバインドします。
ng-value
角度式をng-value
バインドします。
ng-required
角式をonsubmitイベントにバインドします。
ng-style
HTML要素にCSSスタイルを設定します。
ng-pattern
パターンバリデーターをngModelに追加します。
ng-maxlength
maxlengthバリデーターをngModelに追加します。
ng-minlength
にminlengthバリデータを追加します。
ng-classeven
ngRepeatと組み合わせて動作し、奇数(偶数)行にのみ有効です。
ng-classodd
ngRepeatと組み合わせて動作し、奇数(偶数)行にのみ有効です。
ng-cut
カットイベントのカスタム動作を指定するng-cut
使用します。
ng-copy
コピーイベントのカスタム動作を指定するために使用します。
ng-paste
ペーストイベントのカスタム動作を指定するために使用します。
ng-options
要素の要素のリストを動的に生成するために使用されます。
ng-list
指定された区切り文字に基づいて文字列をリストに変換するために使用します。
ng-open
ngOpen内の式が真実である場合、要素のオープン属性を設定するng-open
使用されます。
ngClick
ng-click
ディレクティブは、クリックイベントをDOM要素に関連付けます。
ng-click
ディレクティブを使用すると、DOMの要素がクリックされたときのカスタム動作を指定できます。
これは、ボタン上でクリックイベントをアタッチし、コントローラで処理する場合に便利です。
このディレクティブは、イベントオブジェクトを$event
として使用できる式を受け取ります
HTML
<input ng-click="onClick($event)">Click me</input>
コントローラ
.controller("ctrl", function($scope) {
$scope.onClick = function(evt) {
console.debug("Hello click event: %o ",evt);
}
})
HTML
<button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
HTML
<button ng-click="count()" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
コントローラ
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
ボタンをクリックすると、 onClick
関数を呼び出すと、「Hello click event」とそれに続くイベントオブジェクトが表示されます。
ngRequired
ng-required
は、要素のrequired
検証属性を追加または削除しinput
。これにより、 input
require
検証キーが有効または無効になりinput
。
input
要素が空でない値を持つ必要があるかどうかをオプションで定義するために使用されます。このディレクティブは、複雑なHTMLフォームの検証を設計する際に役立ちます。
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-model-options
ng-model-options
のデフォルトの動作に変更することができますng-model
、このディレクティブはNG-モデルが更新されたときに発動するとデバウンス効果を添付するイベントを登録することができます。
このディレクティブは、定義オブジェクトまたはスコープ値への参照に評価される式を受け入れます。
例:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
上記の例では、上の500ミリ秒のデバウンス効果を付着するmyValue
ユーザが上入力し終わった後に、モデル500ミリ秒を更新する原因となる、 input
(場合、つまりmyValue
更新を終えました)。
使用可能なオブジェクトのプロパティ
updateOn
:入力にバインドするイベントを指定します。ng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
:モデル更新に向けて数ミリ秒の遅延を指定するng-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
:デフォルトのフォーム検証を回避して、モデルに無効な値を許可するブール値のフラグです。デフォルトでは、これらの値はundefined
として扱われます。getterSetter
:ng-model
を単純モデル値ではなくゲッター/セッター関数として扱うかどうかを示すbooleanフラグ。関数が実行され、モデル値が返されます。例:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
:入力がdate
またはtime
場合、モデルのタイムゾーンを定義します。タイプ
クローク
ngCloak
ディレクティブは、アプリケーションがロードされている間に、ngCloak
HTMLテンプレートが生の(コンパイルされていない)フォームでブラウザによって短時間表示されないようにするために使用されます。 - ソースを表示
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
をbody要素に適用できますが、ブラウザビューのプログレッシブレンダリングを可能にするために、ページの小さな部分に複数のngCloakディレクティブを適用することをお勧めします。
ngCloak
ディレクティブにはパラメータはありません。
参照: ちらつき防止
インクルージョン
ng-includeを使用すると、ページの一部のコントロールを特定のコントローラに委任できます。そのコンポーネントの複雑さが、専用コントローラー内のすべてのロジックをカプセル化するようになっているので、これを行うことができます。
例は次のとおりです。
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
/gridview
は、Webサーバーによって別個の正当なURLとして提供される必要があることに注意してください。
また、 src
-attributeはAngular式を受け入れます。これは、変数または関数呼び出し、たとえばこの例のように文字列定数である可能性があります。この場合、ソースURLを一重引用符で囲むようにする必要があります 。そのため、文字列定数として評価されます。これは混乱の一般的な原因です。
/gridview
html内では、 gridController
をページの周りにgridController
れているかのように参照できます。例:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
src属性で{{hash}}
ようなアングルマークアップを使用すると正しく機能しません。ブラウザは、リテラルテキストとURLからフェッチする{{hash}}
角度が内部表現を置換するまで{{hash}}
。 ng-src
ディレクティブはイメージタグ要素の元のsrc
属性をオーバーライドし、問題を解決します
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
ng-pattern
ディレクティブは、正規表現パターンに評価される式を受け取り、そのパターンを使用してテキスト入力を検証します。
例:
<input>
要素が値(ng-model)が有効なIPアドレスであるときに有効になるようにしたいとしましょう。
テンプレート:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
コントローラ:
$scope.ipRegex = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
ngValue
ng-repeat
ngValueで主に使用されるのは、ngRepeatを使用してラジオボタンのリストを動的に生成する場合に便利です
<script>
angular.module('valueExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.names = ['pizza', 'unicorns', 'robots'];
$scope.my = { favorite: 'unicorns' };
}]);
</script>
<form ng-controller="ExampleController">
<h2>Which is your favorite?</h2>
<label ng-repeat="name in names" for="{{name}}">
{{name}}
<input type="radio"
ng-model="my.favorite"
ng-value="name"
id="{{name}}"
name="favorite">
</label>
<div>You chose {{my.favorite}}</div>
</form>
ngCopy
ngCopy
ディレクティブは、コピーイベントで実行される動作を指定します。
ユーザーがデータをコピーしないようにする
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
コントローラ
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ペースト
ngPaste
ディレクティブは、ユーザーがコンテンツを貼り付けるときに実行するカスタム動作を指定します
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
href値の中に角度式がある場合、href属性の代わりにngHrefが使用されます。 ngHrefディレクティブは、タグ、タグなどのhref属性を使用して、htmlタグの元のhref属性をオーバーライドします。
ngHrefディレクティブは、AngularJSがコードを評価する前にユーザーがリンクをクリックしてもリンクが壊れていないことを確認します。
例1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
例2この例では、入力ボックスからhref値を動的に取得し、href値としてロードします。
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
例3
<script>
angular.module('angularDoc', [])
.controller('myController', function($scope) {
// Set some scope value.
// Here we set bootstrap version.
$scope.bootstrap_version = '3.3.7';
// Set the default layout value
$scope.layout = 'normal';
});
</script>
<!-- Insert it into Angular Code -->
<link rel="stylesheet" ng-href="//maxcdn.bootstrapcdn.com/bootstrap/{{ bootstrap_version }}/css/bootstrap.min.css">
<link rel="stylesheet" ng-href="layout-{{ layout }}.css">
ngList
ng-list
ディレクティブは、区切られた文字列をテキスト入力から文字列の配列に、またはその逆に変換するために使用されます。
ng-list
ディレクティブは、デフォルト区切り文字", "
(コンマスペース)を使用します。
あなたは割り当てることにより、手動での区切り文字を設定することができng-list
このような区切り文字ng-list="; "
。
この場合、区切り文字はセミコロンとそれに続くスペースに設定されます。
デフォルトでは、 ng-list
はng-trim
という属性があり、trueに設定されています。 ng-trim
すると、デリミタの空白が尊重されます。デフォルトでは、 ng-list
ng-trim="false"
設定しない限り、 ng-list
は空白を考慮しません。
例:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
顧客区切り文字は次のように設定されます;
。入力ボックスのモデルは、スコープ上に作成された配列に設定されます。
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
入力ボックスにはコンテンツが表示されます: angular; is; cool!