为了构建实际的导航,我喜欢这种方法:http://jsfiddle.net/xUsCc/1/,我在此处找到了Recursion in Angular directives,也在此处创建了一个跟进问题:how do i bind a directive to an injected service instead of a parent or isolated scope?
问题是该指令从标记的属性获取其数据,该标记是父作用域上的作用域变量,如下所示:
<tree family="treeFamily"></tree>
导航栏位于视图外部,因此除了rootscope之外,没有可以从中获取变量的范围。
我在想我可以注入一些工厂/服务,其中包含允许用户访问的菜单项。我尝试在隔离范围内设置范围变量,但这只是杀死了任何渲染。我猜角度不喜欢在隔离范围中设置任何变量
scope: {family: {
name : "Parent",
children: [{
name : "Child1",
children: [{
name : "Grandchild1",
children: []
},{
name : "Grandchild2",
children: []
},{
name : "Grandchild3",
children: []
}]
}, {
name: "Child2",
children: []
}]
}
}
答案 0 :(得分:0)
如果你真的需要递归指令,那么从$rootScope
中的模型初始化它似乎是正确的解决方案。
如果您的菜单只有两个级别,我只需将其包装到一个控制器中,该控制器从$rootScope
获取数据,或者添加到$rootScope
一些允许控制菜单中项目的方法(例如addSection()
,remoteSection()
等。)
您还可以使用Service
来允许不同组件之间的通信。