【发布时间】:2014-01-02 15:54:04
【问题描述】:
我在我的 AngularJS 应用程序中使用 Nick Perkin 的树指令 (https://github.com/nickperkinslondon/angular-bootstrap-nav-tree)。
我想在两个不同的 UI Bootstrap 选项卡中显示基于相同数据的两棵树。树会根据过滤器显示不同的元素。
我的问题是,当我展开一棵树中的一个元素,然后切换到包含另一棵树的选项卡时,另一棵树的元素也会展开,反之亦然。
我猜这个问题在某种程度上与范围有关,但是该指令的编写方式是创建一个隔离的范围。 (至少我是这么认为的。)
当使用两个不同的数据数组时它工作正常,但奇怪的是,当我使用数据数组的真实副本(通过使用arrayB = arrayA.slice(); 复制)时,它不再工作并且展开/折叠状态等是再次在两个树实例之间共享。
是我的错误还是我必须通过某种 treeId 扩展指令?如果是这样,我该怎么做?
【问题讨论】:
-
请以jsbin.com 之类的方式举例。不看代码就很难调试。在不包含代码的情况下发布代码问题也是违反 SO 政策的。
-
Array.slice()创建一个浅拷贝。 -
@m59 我加了一个例子。
-
@zeroflagL 我的主要问题是我希望两棵树都基于相同的数据,复制的东西只是我在试图找到问题时玩弄的东西。
-
隔离范围意味着指令可以处理不同的数据。
标签: javascript angularjs twitter-bootstrap tree angularjs-directive