2016-07-25 30 views
0

Ich habe eine Komponente, die ich erstellen möchte, akzeptiert eine user_id und lädt dann Benutzerinformationen dafür im Hintergrund und lässt dann ein Element auf der Seite mit einer anderen Anweisung daran hängen.Aktualisierung der Richtlinientabelle bei Aktualisierung der Bereichseigenschaften

Bisher ist dies, was ich habe

<user-popover user-id="item.item_high_bid_user_id"></user-popover> 

angular.module('bidrAdminApp') 
    .directive('userPopover', ['Data', function (Data) { 
    return { 
     template: '<a bb-popover-template="user-popover-content.html">{{user.user_name}}</a><i ng-hide="{{user}}" class="fa fa-spinner fa-spin" aria-hidden="true"></i>', 
     scope: { 
     userId: '=', 
     user: '=*' 
     }, 
     restrict: 'E', 
     controller: function($scope, $element, $attrs, Data){ 
     Data.getUser($scope.userId).then(function(userData){ 
      $scope.user = userData.data; 
     }); 
     }, 
    }; 
    }]); 

Ich bin Laden von Daten von meinem Data Service und die user.user_name in der Vorlage im Hintergrund immer korrekt aktualisiert wird, ist die Frage der Spinner nicht versteckt wenn die $scope.user aktualisiert wird. Wie kann ich den Spinner ausblenden, nachdem die Benutzerdaten geladen wurden und der Rest der Vorlage aktualisiert wurde?

UPDATE

Ich brauche hier, dass diese Richtlinien in einer wiederkehrenden Raster von Veröffentlichungen bis zu erwähnen, ist diese Anweisung wie eine Art Benutzer schweben Karte, auf Facebook ähnliche wirken soll, wenn man über jemanden schweben und Sie erhalten ein Popover mit einigen Informationen über den Benutzer, also würde ich wirklich gerne jede Iteration dieser Direktive in der Lage sein, eigenständig zu stehen, da die Ladeanzeige jetzt verschwindet, nachdem alle Direktiven ihre $scope.user Eigenschaft geladen haben.

+0

Drop benutzen Sie einfach die 'user: '= *'' Teil in der Richtlinie Anwendungsbereich, sollte Gut würde ich meinen. – Gatsbill

+0

@Gatsbill der Spinner bleibt noch, wenn ich das entferne. – Jordan

Antwort

0

Sie könnten versuchen:

ng-hide="user.user_name.length > 0" 
+0

Nein, der Spinner ist noch da. – Jordan

+0

'ng-hide' nimmt einen Ausdruck direkt, es muss nicht mit Klammern umschlossen werden. –

+1

Richtig Ich bearbeitete die Antwort, auch die Eigenschaft ist Benutzername nicht Name – vodich

0

einfach den Anwendungsbereich von Ihrer Richtlinie entfernen und $attrs.userId

angular.module('bidrAdminApp') 
    .directive('userPopover', ['Data', function (Data) { 
    return { 
     template: '<a bb-popover-template="user-popover-content.html">{{user.user_name}}</a><i ng-hide="{{user}}" class="fa fa-spinner fa-spin" aria-hidden="true"></i>', 
     restrict: 'E', 
     controller: function($scope, $element, $attrs, Data){ 
     Data.getUser($attrs.userId).then(function(userData){ 
      $scope.user = userData.data; 
     }); 
     }, 
    }; 
    }]);