2015-09-04 82 views
3

我在指令中使用了isoated作用域。一切似乎都很好。我在兩個屬性上設置了=作用域,並在我的模板中綁定到它們。然後,在我的控制器中,我調用我的服務,獲取數據並將其推送到綁定的對象上。隔離範圍角度綁定未從地理位置更新

真正擺脫我的是我可以記錄和設置一個斷點,並可以看到數據,但角度不會更新綁定(儘管它更新我的布爾字段就好了)。

我提供了一個plunkr: http://plnkr.co/edit/8sVwaea5Amqvf3yiI1Nm?p=preview

而且培訓相關代碼部分:

if (navigator.geolocation) { 
    //navigator.geolocation.getCurrentPosition(success, fail); 
    $timeout(function() { success({testdata: "bogusdata"}) }, 1500); 
    } else { 
    fail({ error: "navigator.geolocation not available"}); 
    } 

顯然,如果我用我的$超時模擬,它工作得很好。但是,如果我替換getCurrentPosition函數,沒有更新(但它會記錄)?!?!

幫助?

+0

優秀的代碼。我試圖找到任何問題或錯誤來幫助你。 –

回答

1

其實只是在與你想處理數據的方式有問題 - Geolocation對象到達,被提上了$scope正確,它只是JSON.stringify將其序列(貌似不正確地)爲{}

您可以通過登錄$scope.locationData.payload驗證這一點 - 你會看到整個對象出現在控制檯上,並記錄typeof $scope.locationData.payload.coords顯示object,這意味着它在日誌調用時正確填充。 (登錄對象本身不會是證明了這一點,因爲執行console.log只記錄對象的引用,異步訪問它們,當你手動展開它們)

這只是看似不正確的,因爲JSON.stringify只應該登錄一個對象的自身屬性,而coordstimestamp不是這個Geolocation對象的屬性。 (嘗試$scope.locationData.payload.hasOwnProperty('coords'):它返回false

解決方法取決於您的確切需求。也許你甚至不需要一種解決方法,因爲你可以訪問這些數據,只是不能以你想要的方式記錄或串化它。

其他資源:

+0

感謝您的回覆,它會花費我一些時間來消化它。 – cocogorilla

+1

嘗試從位置數據對象獲取單個屬性:$ scope.locationData = {message:error.message ...} –