Ionic アプリでphonegap-estimotebeaconsプラグインを使用して、いくつかのビーコンの範囲を設定しています。ビーコン情報が更新されたら、ビューを更新したいのですが、別のタブに切り替えてから元に戻すまでリストが更新されません。
見つかったすべてのビーコンをリストする私のビューは次のとおりです。
<ion-view view-title="Beacons">
<ion-content>
<ion-list>
<ion-item ng-repeat="beacon in beacons" type="item-text-wrap">
<span>{{beacon.macAddress}}</span>
<span>{{beacon.distance}}</span>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
ビューをレンダリングするコントローラーは次のとおりです。
.controller('BeaconsCtrl', function($scope, Beacons) {
$scope.beacons = [];
Beacons.range($scope);
})
その後、Beacons
ファクトリはビーコンの範囲設定を開始し、成功したコールバックごとにスコープを更新します。
.factory('Beacons', function() {
rangeBeacons = function($scope) {
var success = function(beaconInfo) {
$scope.beacons = beaconInfo.beacons;
};
var failure = function(errorMessage) {
alert(errorMessage);
};
EstimoteBeacons.startRangingBeaconsInRegion(
{},
success,
failure
);
};
return {
range: rangeBeacons
};
})
私が見た他の例から、$scope
オブジェクトを更新するとビューが反応するように見えますが、ビューを更新するには別のタブに移動してから戻る必要があります。$scope
変数が変更されたらすぐにビューを更新するにはどうすればよいですか?
アップデート
$scope.beacons
コントローラーのコードを変更して、空の配列に初期化しようとしたことを示しましたが、違いはありません。