Ionicアプリで現在再生中のトラックを表すように動的に更新されるオブジェクトがあります。視覚的なフィードバックは現在再生中のトラックアートとタイトルです。この関数は絶対にうまく動作し、次のトラックにスキップするためにボタンを押すたびにインターフェイスが更新されるため、正しく更新されます。
しかし、私はsetInterval()
に追加してトラックを自動的に進めることができ、トラックが進むたびにインターフェイスが更新されないようにしました。正しいトラックの再生が聞こえるので、変数は$scope
で正しく更新されていますが、インターフェイス要素は一致するように更新されません。
これはDOMの問題ですか?ボタンを押すとIonicは自動的にこれを行いますか?私はちょうどユーザー入力を要求するのではなく、タイマーで実行しているときに同じコードがどのように動作しないのか分かりません。
JS:
function advance() {
var i = currentIndex;
$scope.stop();
if (i < 4) {
$scope.current = {
'index': i + 1,
'track': $scope.active.tracks[i + 1]
};
$scope.upNext = $scope.active.tracks[i + 2];
$scope.play($scope.current.track.preview);
currentIndex++;
return;
}
$scope.closeModal();
}
私はこの質問が漠然と少しかもしれない場合には必要であれば、私は展開することができごめんなさい。
編集:advance()
関数は、この関数によって呼び出されます。
$scope.open = function (i, r) {
console.log(currentIndex);
$scope.openModal(i, r);
autoAdvance = window.setInterval(advance, 30000);
};
私が言うように、事前の機能が動作し、$スコープ変数が更新されています。更新されるとHTMLに反映されません。
あなたは、コントローラの外部で新しい前進の機能をコントローラの内部からコードを移動しましたか?この場合、$ scope変数のスコープは分離されます。 – bstockwell
いいえ、アドバンス機能は同じコントローラ内にあり、 '$ scope'が正しく更新されていることを知っています.HTMLテンプレートはそれを受け取っていません –
あなたのコード、特に場所clickとintervalの両方でadvance()を呼び出しています。 – bstockwell