如何创建一个允许传递给它的菜单项的动态导航?

时间:2013-09-12 21:57:36

标签: angularjs angularjs-directive

为了构建实际的导航,我喜欢这种方法: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: []
        }]
      }
    }

1 个答案:

答案 0 :(得分:0)

如果你真的需要递归指令,那么从$rootScope中的模型初始化它似乎是正确的解决方案。

如果您的菜单只有两个级别,我只需将其包装到一个控制器中,该控制器从$rootScope获取数据,或者添加到$rootScope一些允许控制菜单中项目的方法(例如addSection()remoteSection()等。)

您还可以使用Service来允许不同组件之间的通信。