3

私はcontroller次の呼び出しを持つを持っています:

userFactory.getScore(_token, function (response) {
    $scope.scores = response;
    renderCharts(response,$scope);
    score.resolve();
});

ここ、userFactory工場です。

今私の中でfunction renderCharts

function renderCharts(response,$scope) {

    $scope.current_target_label = {"label":"Current Score"};
    // Highcharts config object declaration here

    setInterval(function($scope) {
        // Logic to update highchart
        $scope.current_target_label = {"label":"Target Score"};
    }

}

html次の割り当ては、ビューの ng-bind の値を更新しません:$scope.current_target_label = {"label":"Target Score"};

私は確かに何か間違ったことをしています。ビューでdiv更新されたテキストの値を取得するために何をすべきかについてのポインタに感謝しhtmlますか?

4

1 に答える 1

3

setIntervalangulars $digest-cycleのにあるため、angular はデータバインディングを更新しません。使用できますが、それは悪い習慣です。またはを使用することをお勧めします。これにより、 $digest-cycleがトリガーされます。例えば:$apply$timeout$interval

function renderCharts(response,$scope) {
    // ...

    $interval(function() {
        // Logic to update highchart
        $scope.current_target_label = {"label":"Target Score"};
    }, delay);
}

ノート:

  • もちろん、必要な場所にサービスを注入する必要があります。
  • 元のコードで使用しsetInterval(function($scope) {た . $scopehere はおそらく未定義であるため、外部$scope変数をシャドウします。
于 2015-06-30T07:15:27.383 に答える