1

p という変数の値を変更するスイッチがあります。

<div ng-switch on="p">
   <div ng-switch-when="true">
       /*...show nodes and ability to add node*/
   </div>
   <div ng-switch-when="false">
       /*for now show nothing*/
   </div>
</div>

私のコントローラーで:

$scope.nodes=[{node1},{node2},{node3}];

function to add a node

$scope.$watch('nodes', function(nodes) {
    console.log(nodes); 
    console.log("================");   
},true);

問題:上記の $scope ノードを印刷すると、すべての新しいノードが表示されます。オフとオン (p=false の次に p=true) を切り替えると、最初の $scope.nodes が作成されます。スイッチでノードがリセットされるのはなぜですか? この例を参照してください: plunker

編集: ng-switch は、ディレクティブがない場合はスコープを変更せずに機能しましたが、その中でディレクティブを使用したときにスコープを再初期化しました。ng-switch を削除して代わりに ng-show を使用した理由は正確にはわかりませんが。

4

1 に答える 1

0

コントローラーと、コントローラーが初期化されているレベルを確認すると役立ちます。ngSwitch はコンテンツを非表示にするだけではありません。切り替えが行われるたびに、html を削除して追加し、コントローラーとディレクティブを初期化します。おそらくノードもそこで初期化されます。

于 2015-06-19T10:04:11.213 に答える