2

誰かがAngularJSでこのコードセグメントを説明するのを手伝ってくれますか?

$rootScope.compiledScope = $scope.$new(!0, $rootScope), $scope.variable = "someValue";
  1. ここでサービスを提供している $new オペレーターは何ですか
  2. !0 とは?
  3. を使用して 2 つのステートメントを分離し、左側の 1 つの変数に割り当てる方法
4

3 に答える 3

1

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";
于 2016-01-27T10:23:55.050 に答える
1

ドキュメントが言うように、あなたの場合の最初のパラメータ: !0 = true :

true の場合、スコープはプロトタイプとして親スコープから継承されません。親スコープのプロパティを表示できないため、スコープは分離されています。

2 番目のパラメーター、あなたの場合は $rootScope:

新しく作成されたスコープの $parent になるスコープ。指定されていない場合、デフォルトでこのスコープになります。

$scope.$new(!0, $rootScope) は、rootScope の新しく新しい子スコープを作成します。

3) ここで新しいスコープが作成されると、 $scope.variable が新しいスコープに割り当てられるため、この変数はこの新しいスコープと親スコープでのみ使用できます。

于 2016-01-27T10:13:45.633 に答える