La funzione seguente definisce una variabile nel rootcope.impossibile accedere a rootcope var nello scope direttiva
function MyCtrl($scope, $rootScope) {
$rootScope.buttons = [{href: '#/students', icon:'icon-ok'},
{href: '#/students', icon:'icon-remove'},
{href: '#/students/new', icon:'icon-plus'}];
}
MyCtrl.$inject = ['$scope', '$rootScope'];
il codice HTML nella direttiva sotto dipende da una variabile nella rootscope -
angular.module('btnbar.directive', []).
directive("btnBar", function(){
return {
restrict: 'E',
scope :{},
controller: function($scope, $element,$rootScope) {
},
template:'<div class="btn-toolbar">' +
'<a class="btn" ng-repeat="b in buttons" href={{b.href}}>' +
'<i class={{b.icon}}></i></a></div>',
replace:true
}
});
Tuttavia quanto sopra lavoro codice di doesnt. Funziona se definisco direttamente la variabile 'buttons' nell'ambito della direttiva.
Jim grazie per la grande risposta. Una domanda perché ho bisogno di specificare i pulsanti = "pulsanti" nel mio attributo. Inoltre cosa fa? Perché il codice non funziona senza la suddetta dichiarazione di attributo? – murtaza52
perché il controllore di direttiva accetta scope, element, attribute e transclude, il terzo parametro ur è $ rootScope che in realtà è il parametro dell'attributo. ecco il codice del controller: function ($ scope, $ element, $ rootScope). Ora consulta la documentazione http://docs.angularjs.org/guide/directive – AsadYarKhan
@AsadYarKhan Penso che tu sia un controllore confuso con link e compilazione. – Usagi