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 を使用した理由は正確にはわかりませんが。