ng-switch后范围发生变化

时间:2015-06-19 09:02:11

标签: angularjs ng-switch

我有一个开关可以更改名为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 =假,然后p =真)我有初始$ scope.nodes。为什么我的节点在交换机上重置? 请参阅此示例:plunker

编辑:如果我没有指令但是当我在其中使用指令时重新初始化我的范围时,ng-switch没有更改范围。虽然我还没有确切地理解为什么我放弃了ng-switch并使用了ng-show。

1 个答案:

答案 0 :(得分:0)

有助于查看控制器以及初始化控制器的级别。 ngSwitch不仅隐藏内容 - 它将删除并添加html并在每次切换时初始化控制器和指令。也许节点也会在那里初始化。