AngularJS Scope(作用域)


Scope(スコープ)は、HTML(ビュー)とJavaScript(コントローラー)の間の架け橋です。

Scopeはオブジェクトであり、利用可能なメソッドとプロパティを持っています。

Scopeはビューとコントローラーに適用できます。


Scopeの使い方

AngularJSでコントローラーを作成するとき、あなたは~できます。$scopeオブジェクトをパラメータとして渡す:

AngularJS 实例

コントローラーのプロパティは、ビューのプロパティに対応します:

<div ng-app="myApp" ng-controller="myCtrl">

<h1>{{carname}}</h1>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.carname = "Volvo";
});
</script>

尝试一下 »

コントローラーに追加するとき$scopeオブジェクトの場合、ビュー(HTML)はこれらのプロパティを取得できます。

ビューでは、追加する必要はありません$scopeプレフィックスは、プロパティ名を追加するだけで済みます。例:{{carname}}。


Scope 概述

AngularJSアプリケーションの構成は次のとおりです:

  • View(视图), 即 HTML。
  • Model(モデル)、現在のビューで利用可能なデータ。
  • Controller(コントローラー)、すなわち JavaScript 関数であり、プロパティを追加または変更することができます。

scopeはモデルです。

scopeはJavaScriptオブジェクトであり、プロパティとメソッドを備え、これらのプロパティとメソッドはビューとコントローラーで使用できます。

AngularJS 实例

ビューを変更すると、モデルとコントローラーもそれに応じて更新されます:

<div ng-app="myApp" ng-controller="myCtrl"> <input ng-model="name"> <h1>{{greeting}}</h1> <button ng-click='sayHello()'>点我</button> </div> <script>
var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.name = "サンプル"; $scope.sayHello = function() { $scope.greeting = 'Hello ' + $scope.name + '!'; }; });
</script>

尝试一下 »

Scopeの作用範囲

現在使用しているscopeを理解することは非常に重要です。

上記の2つの例では、スコープは1つだけなので処理は比較的簡単ですが、大規模プロジェクトでは、HTML DOM内に複数のスコープが存在します。その場合、自分が使用しているスコープがどのスコープに対応するのかを知る必要があります。

AngularJS 实例

私たちが使用するときng-repeatディレクティブを使用する場合、各繰り返し項目は現在の繰り返しオブジェクトにアクセスします:

<div ng-app="myApp" ng-controller="myCtrl">

<ul>
    <li ng-repeat="x in names">{{x}}</li>
</ul>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.names = ["Emil", "Tobias", "Linus"];
});
</script>

尝试一下 »

每个<li>要素は現在の繰り返しオブジェクトにアクセスできます。ここでは文字列に対応し、変数を使用します。x表示。


根作用域

すべてのアプリケーションには$rootScope、それは...に作用できますng-appディレクティブに含まれるすべてのHTML要素内。

$rootScopeアプリケーション全体に作用できます。各controller内のscopeの架け橋です。rootscopeで定義した値は、各controllerで使用できます。

AngularJS 实例

コントローラーを作成するとき、$rootScopeをパラメータとして渡すと、アプリケーション内で使用できます:

<div ng-app="myApp" ng-controller="myCtrl">

<h1>{{lastname}}家族成员:</h1>

<ul>
    <li ng-repeat="x in names">{{x}} {{lastname}}</li>
</ul>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope, $rootScope) {
    $scope.names = ["Emil", "Tobias", "Linus"];
    $rootScope.lastname = "Refsnes";
});
</script>

尝试一下 »
其他扩展