我有一个开关可以更改名为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。
答案 0 :(得分:0)
有助于查看控制器以及初始化控制器的级别。 ngSwitch不仅隐藏内容 - 它将删除并添加html并在每次切换时初始化控制器和指令。也许节点也会在那里初始化。