直接将服务注入模板

时间:2015-10-27 19:27:15

标签: angularjs angular-material

是否可以直接从模板中的表达式访问服务,例如在ngClick内?我并不认为这是可能的,但Angular材料的菜单演示似乎注入了自定义服务$mdOpenMenu,就像在表达式中注入$ event一样简单:https://material.angularjs.org/latest/demo/menu

1 个答案:

答案 0 :(得分:0)

正如您在source for the menu controller中看到的那样,菜单指令会导致function displayTreeview($cats,$depth=0) { //if($depth==0){echo '<ul>';} $stringBuilder = ""; foreach($cats as $cat) { $hasChildren=count($cat['children'])>0; $class = $hasChildren?' class="menu-item-has-children"':''; $stringBuilder .= '<li'.$class.' data-children="'.count($cat['children']).'">'.$cat['name']; if($hasChildren){$stringBuilder .='<ul class="dropdown-menu sub-menu">';displayTreeview($cat['children'],$depth+1);$stringBuilder .= '</ul>';} $stringBuilder .= '</li>'; } //if($depth==0){echo '</ul>';} return $stringBuilder ; } 被分配到该指令中的标记范围,因此$mdOpenMenu在标记中可用,并且可以传递给函数。它不是传统角度意义上的服务。这只是指令控制器添加到范围内的功能。