如何传递然后访问指令模板中的对象(指令使用隔离范围)?

时间:2013-04-19 20:52:23

标签: angularjs angularjs-directive angularjs-scope

我有一个navBarItems的集合,我现在正在这样呈现:

 <a data-role="button" data-iconpos="notext" ng-show="navBarItems['search'].show" ng-click="navBarItems['search'].click()" data-icon="{{navBarItems['search'].icon}}">{{navBarItems['search'].title}}</a>

我正在重复这段代码而只是改变'type',所以我想创建一个带有模板的指令并像这样调用它:

<navBarItem type="search"></navBarItem>

我已经尝试将属性传递给隔离范围,但是在指令中无法访问navBarItems。

1 个答案:

答案 0 :(得分:2)

如上面的注释所述,由于正在使用/创建隔离范围,隔离范围所需的任何其他数据都需要通过同一元素上的其他属性传递给指令。在这种情况下,需要指定navBarItems

<navBarItem type="search" items="navBarItems"></navBarItem>

由于navBarItems是一个对象(不是字符串),因此应在隔离范围定义中使用=语法:

scope: { items:'=',  ... },