2014-03-31 9 views
22

Ich habe diesen Controller und ich möchte die $scope.progress aus dem Funktionsrückruf aktualisieren. Ich habe versucht mit $rootScope und $scope.apply(), aber ich kann es nicht zum Laufen bringen. Gibt es etwas, das mir fehlt?

progressupdate ist eine Variable, die vom Ereignis zurückgegeben wird. der Code ist nicht genau so. Ich habe es hier sehr einfach gemacht, um die Struktur zu zeigen.

app.controller('player', function($scope) { 

    var show = function(url) { 
     function(err, showOK) { 
      if (err) { 
       console.log(err); 
      } else { 
       showOK.on('listening', function(){ 
        $scope.progress = progressupdate; 
       }); 
      } 
     }); 
    } 

    show(url); 

}); 

Funktioniert diese Funktion im Controller falsch? Soll ich so etwas verwenden?

$scope.show = function(url)...etc 
+0

Ihr Beispiel ist syntaktisch falsch. Nicht sicher, ob das eine schlechte Kopie/Paste oder das eigentliche Problem ist. – SomeKittens

+0

oops, einige schlechte copypasta. – fmtoffolo

Antwort

33

Ich sehe die $apply Funktion auf obige Skript und progressupdate nicht. Versuchen Sie $apply nach Satz, oder setzen Sie es in $apply:

showOk.on('listening', function(){ 
    $scope.$apply(function(){ 
     $scope.progress = progressupdate; 
    }); 
}); 

oder

showOk.on('listening', function(){ 
    $scope.progress = progressupdate; 
    $scope.$apply(); 
}); 

Die erste Methode wird empfohlen.

+1

Ich denke, ich bin ziemlich ausgebrannt, weil ich versucht habe, was du vorher vorgeschlagen hast und es nicht zur Arbeit bringen konnte! Vielen Dank! – fmtoffolo