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 回答