从angularJS中的回调内部更新$ scope

时间:2014-03-31 19:48:26

标签: javascript angularjs scope angularjs-scope

我有这个控制器,我想从函数回调中更新$scope.progress。我尝试使用$rootScope$scope.apply(),但我无法让它发挥作用。 我有什么遗失的吗?

progressupdate是事件返回的变量。 代码并不完全像这样。我在这里简单地展示了结构。

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);

});

我是否在控制器内错误地运行了该功能? 我应该使用这样的东西吗?

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

1 个答案:

答案 0 :(得分:35)

我在上面的脚本上看不到$apply函数,并且进行了更新。设置后尝试$apply,或在$apply内设置:

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

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

建议使用第一种方法。