誰かがAngularJSでこのコードセグメントを説明するのを手伝ってくれますか?
$rootScope.compiledScope = $scope.$new(!0, $rootScope), $scope.variable = "someValue";
- ここでサービスを提供している $new オペレーターは何ですか
- !0 とは?
- を使用して 2 つのステートメントを分離し、左側の 1 つの変数に割り当てる方法
誰かがAngularJSでこのコードセグメントを説明するのを手伝ってくれますか?
$rootScope.compiledScope = $scope.$new(!0, $rootScope), $scope.variable = "someValue";
documentationから、$new
関数は2つのパラメーターを受け入れます。
最初の部分:
$new(isolate, parent);
isolate : true の場合、作成している新しいスコープの分離スコープを作成します。これは基本的に、親スコープから継承しないことを意味します。親スコープから継承されますが、親スコープのプロパティは表示されません。
parent :
$scope
新しく作成されたスコープの親になります。!0 : ほとんどのプログラミング言語では 0 == false。そして、それを否定すると
true
.
コードの最初の部分を解読すると、次のようになります。
$rootScope.compiledScope = $scope.$new(!0, $rootScope)
$rootScope に呼び出されるプロパティを追加compiledScope
します。その値は、親が $rootScope である新しい分離スコープになります。
分離スコープ: 親スコープをプロトタイプとして継承しないスコープ。これは基本的に空のスコープであり、親のプロパティは表示されません。
第二部
$scope.variable = "someValue";
に を付けて、variable
その$scope
値を に設定しますsomeValue
。そして、その間のコンマは2つのステートメントを区切るだけで、次のように同じです:
$rootScope.compiledScope = $scope.$new(!0, $rootScope);
$scope.variable = "someValue";
ドキュメントが言うように、あなたの場合の最初のパラメータ: !0 = true :
true の場合、スコープはプロトタイプとして親スコープから継承されません。親スコープのプロパティを表示できないため、スコープは分離されています。
2 番目のパラメーター、あなたの場合は $rootScope:
新しく作成されたスコープの $parent になるスコープ。指定されていない場合、デフォルトでこのスコープになります。
$scope.$new(!0, $rootScope) は、rootScope の新しく新しい子スコープを作成します。
3) ここで新しいスコープが作成されると、 $scope.variable が新しいスコープに割り当てられるため、この変数はこの新しいスコープと親スコープでのみ使用できます。