Ответ 1
В вашей директиве изолировать
scope:{}
Это означает, что директива не имеет доступа к верхним областям - помните, что области выделения не прототипически наследуются от родительской области. Таким образом, вы либо удаляете область изоляции, либо указываете директиве связывать некоторые свойства с ее локальной областью из родительской области.
scope: {buttons: '='}
Затем вызовите директиву, подобную этой
<btn-bar buttons="buttons"></btn-bar>
Пример: http://plnkr.co/edit/88R66L7uAHoezDZvuoH5?p=preview
Кроме того, вместо изменения $rootScope
с контроллера вы можете сделать это с помощью метода run
var app = angular.module('app', ['btnbar.directive']);
app.run(function($rootScope){
$rootScope.buttons = [{href: '#/students', icon:'icon-ok'},
{href: '#/students', icon:'icon-remove'},
{href: '#/students/new', icon:'icon-plus'}];
});