Directivas AngularJS atribuyen acceso desde el controlador.
Estoy intentando acceder a los atributos de una directiva en la función de controlador. Sin embargo, en el momento en que accedo a ella, no está definido. Noté que si hago un simple temporizador funciona. ¿Hay una manera de ejecutar código solo después de que la directiva y sus ámbitos estén listos y configurados para ser utilizados?
Hice un violín con él. Asegúrate de que tu consola esté abierta.http://jsfiddle.net/paulocoelho/uKA2L/1/
Aquí está el código que estoy usando en el violín:
<div ng-app="testApp" >
<testcomponent text="hello!"></testcomponent>
</div>
var module = angular.module('testApp', [])
.directive('testcomponent', function () {
return {
restrict: 'E',
template: '<div><p>{{text}} This will run fine! </p></div>',
scope: {
text: '@text'
},
controller: function ($scope, $element) {
console.log($scope.text); // this will return undefined
setTimeout(function () {
console.log($scope.text); // this will return the actual value...
}, 1000);
},
link: function ($scope, $element, $attrs) {
console.log($scope.text);
setTimeout(function () {
console.log($scope.text);
}, 1000);
}
};
});