我正在構建我的第一個Angular App,它允許用戶根據許多條件搜索供應商數據庫。其中一個標準是它們的位置和與供應商的距離。在視圖中保留數據AngularJS與vs-google-autocomplete
我已經使用了vs-google-autocomplete directive,這是一種連接到google maps API的好方法。不過,我在應用程序中的視圖間持續存在此位置數據的問題。
現在解釋它是如何工作的。用戶輸入他們的搜索條件,根據用戶搜索條件顯示所有潛在供應商的快照(這是通過自定義指令實現的)。然後用戶可以點擊閱讀更多關於供應商的信息,這會將他們帶到供應商的整個頁面(更多詳細信息等)。在這個階段,位置數據丟失了。
我已經創建了一項服務來存儲來自搜索查詢的其他方面的信息,該信息一直保持良好(位置數據除外)。
看來問題在於,當用戶離開頁面時,位置輸入字段會自動重置,從而將位置字段重置爲空。但是,我不明白它在代碼中的作用。
有沒有人有任何關於如何解決這個問題的想法?
下面的代碼(不幸的是我不能得到的jsfiddle實際工作自定義指令,但希望它給了什麼,我想實現一個不錯的主意):
App.factory("searchquery", function() {
return {};
});
App.controller('searchController', ['$scope', '$routeParams', '$rootScope', 'searchquery',
function($scope, $routeParams, $rootScope, searchquery) {
//Create a search query object
$scope.searchquery = {};
//Inject the searchquery service to ensure data persistency when in searchController pages
$scope.searchquery = searchquery;
//DEAL WITH GOOGLE AUTOCOMPLETE ADDRESSES
//Restricts addresses to South Africa only
$scope.options = {
componentRestrictions: {
country: 'ZA'
}
};
//Creates an object to store the address information and parses it into its consitutent parts
$scope.searchquery.address = {
name: '',
components: {
streetNumber: '',
street: '',
city: '',
state: '',
countryCode: '',
country: '',
location: {
lat: '',
long: ''
}
}
};
}
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form name="Search">
<!-- LOCATION -->
<!-- ask the user to specify their location -->
<div class="form-group">
<label for="address">Address</label>
<input vs-google-autocomplete="options" ng-model="searchquery.address.name" vs-street-number="searchquery.address.components.streetNumber" vs-street="searchquery.address.components.street" vs-city="searchquery.address.components.city" vs-state="searchquery.address.components.state"
vs-country-short="searchquery.address.components.countryCode" vs-country="searchquery.address.components.country" vs-latitude="searchquery.address.components.location.lat" vs-longitude="searchquery.address.components.location.long" type="text" name="address"
id="address" class="form-control">
</div>
</form>
謝謝!
傑克
嗨AWolf。感謝您看看這個。如果可能的話,我想讓服務選項起作用,因爲a)我已經開始使用這種方法,並且b)迄今爲止,我還沒有在應用程序中使用ui-router。但是,我不確定是否正確創建了此服務。我已經更新了我的問題以顯示我目前使用的代碼。如果您有任何想法,我們將非常感謝,這是拼圖最後一塊!謝謝! –
好的,請將相關代碼放入您的問題中,然後我會看看是否可以看到問題。 – AWolf
已發佈。謝謝!如果你需要更詳細地瞭解它,讓我知道,我會看到我能做些什麼!再次感謝。 –