0
我有一個陣列$ scope.positions = []的Angular控制器。如何在調用'navigator.geolocation.getCurrentPosition(成功,錯誤)後更新視圖';'與角
這個數組中的HTML與
<tr ng-repeat="position in positions">
<td>{{position.latitude}}</td>
<td>{{position.longitude}}</td>
</tr>
我打電話'navigator.geolocation.getCurrentPosition(success, error);
當我點擊一個按鈕所示。
成功的功能是:
function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$scope.positions.push(new Position(latitude,longitude));
}
其中的位置是一個對象:
function Position(latitud,longitud){
this.latitud=latitud;
this.longitud=longitud;
this.toGoogle=function(){
return new google.maps.LatLng(latitud,longitud);
}
}
當我點擊一個按鈕,上面的變量$ scope.positions添加新位置但該視圖不會隨新數據更新。如果再次點擊,表格會顯示以前的數據,但不顯示當前的數據。
我想Angular中的綁定會在事件後執行,但如果您有回調,例如,Ajax調用,您應該使用JS繪製數據。
或者您可以使用$超時或$ evalAsync有更好的表現http://www.panda-os.com/2015/01/angularjs-apply-digest-and-evalasync/#.VKlWXfnd9B0 – Whisher 2015-01-04 15:05:10
'$超時'在內部同時使用'setTimeout'和'$ apply',所以對性能來說不是更好,而是用於其他目的。在處理將DOM佈局作爲鏈接邏輯的一部分進行查詢的指令時,最常使用「$ evalAsync」。 – tasseKATT 2015-01-04 15:17:16