AngularJS Attendre la portée de la variable à évaluer à partir de la coutume de la directive
Je suis de regarder mon chemin en AngularJS.
J'ai créé une coutume directive:
app.directive('myScroll',function(){
return {
restrict: 'A',
transclude: true,
template: '<div ng-transclude></div>',
link: function(scope , element , attrs) {
element.addClass('scroll-pane');
scope.$watch('tasks', function(newval, oldval){
if ( newval )
{
console.log(newval);
console.log(newval.length);
}
});
console.log("afer watch exper");
console.log (tasks);
}
};
});
avec le code HTML suivant:
<div my-scroll>
<ul>
<li data-ng-repeat="task in tasks" class="task-wrapper">
<div class="task-element">
<div class="name">{{task.name}}</div>
<div class="text">{{task.action}}</div>
</div>
</li>
</ul>
</div>
les tâches de l'objet est évalué par le biais d'un service appelé par le contrôleur ( si nécessaire, je vais poster son code).
dans la directive, code les tâches de l'objet est indéfini, car j'ai pour les tâches de la longueur d'exécuter plus de css commandes que j'ai à attendre ng-repeat pour terminer ou tout simplement attendre pour les tâches variable sera évalué.
pour quelque raison tâches est toujours pas défini à la fois à l'extérieur et à l'intérieur de l' $regarder déclaration.
je peux voir dans la console "après la montre de compé" est imprimé en premier et ensuite le "regarder", mais toujours pas de valeurs.
le newval objet a [move2:function], mais sa propriété length retourne 0, mais il maintient un tableau de ressources avec mes tâches.
ce qui me manque ici, et comment puis-je exécuter la commande, lorsque les tâches variable est évaluée?
merci pour vos aides.
OriginalL'auteur RonenIL | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
scope.tasks
de se référer aux données.OriginalL'auteur zs2020
Essayer de passer le 3e paramètre - vrai $watch:
true
forces de comparaison sur l'objet de l'égalité au lieu de référence. Savez-vous pourquoi il est nécessaire ici?Lorsque vous transmettez vrai que le 3ème paramètre angulaire crée une copie en profondeur du modèle qui est regardé. Aussi, le document se lit comme suit : "Pour enregistrer la valeur de l'objet de la comparaison ultérieure, l'angulaire.la fonction de copie est utilisée. Cela signifie également que regarder des options complexes ont des effets indésirables de la mémoire et de l'incidence sur les performances." Donc, maintenir une veille sur de gros objets est probablement pas une bonne idée.
Je suis coincé sur ce à quelques reprises j'ai donc fait un plunker pour démontrer la différence: plnkr.co/modifier/DHJPwMOg4LZTSk1uiV9z?p=preview
OriginalL'auteur AlwaysALearner