在这里,当我点击storeAreaInCookie,这将导致城市的纬度和长度,这些结果我必须存储在cookie中,需要使用我想在我的网站中使用的地方。但是当我试图使用这个代码时不存储cookie,并在控制台中说没有定义cookie存储。我可以解决这个问题吗?
<div ng-app="MyApp" ng-controller="MyCtrl">
<div ng-repeat="x in names">
<div ng-click="storeAreaInCookie(x.city)" >{{x.city}}</div>
</div>
</div>
<script>
angular.module('MyApp', ['ngCookies'])
.controller('MyCtrl', ['$scope', '$http',"$rootScope", "$cookieStore", function($scope, $http, $rootScope, $cookieStore) {
$scope.storeAreaInCookie = function (area) {
var geocoder = new google.maps.Geocoder();
var lat="";
var long="";
geocoder.geocode( { 'address': area}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$rootScope.lat=results[0].geometry.location.lat();
$rootScope.long=results[0].geometry.location.lng();
} else {
alert("Something went wrong " + status);
}
codeLatLng($rootScope.lat,$rootScope.long);
$(document).ready(function(){
$("#locationView").slideToggle();
});
});
$cookieStore.put('lat',$rootScope.lat);
$cookieStore.put('long',$rootScope.long);
alert("lat"+$cookieStore.get('lat'));
alert("long"+$cookieStore.get('long'));
};
}]);
</script>
答案 0 :(得分:2)
确保添加参考文件
angular-cookies.js
它可能是依赖性错误
答案 1 :(得分:2)
可能是你正在搞乱角度cookie依赖。在更改$ rootScope中的值后,您需要使用$rootScope.$apply()
<强> CODE 强>
angular.module('MyApp', ['ngCookies'])
.controller('MyCtrl', ['$scope', '$http', "$rootScope", "$cookieStore", "$q", function ($scope, $http, $rootScope, $cookieStore, $q) {
$scope.names = [{
"id": 1,
city: "abc",
lat: 123,
long: 345
}, {
"id": 2,
city: "asd",
lat: 123,
long: 345
}, {
"id": 3,
city: "dfg",
lat: 123,
long: 345
}];
//mock ajax
$scope.storeAreaInCookie = function (area) {
var geocoder = new google.maps.Geocoder();
var lat = "";
var long = "";
geocoder.geocode({
'address': area.city
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$rootScope.lat = results[0].geometry.location.lat();
$rootScope.long = results[0].geometry.location.lng();
$rootScope.$apply()
$cookieStore.put('lat', $rootScope.lat);
$cookieStore.put('long', $rootScope.long);
alert("lat" + $cookieStore.get('lat'));
alert("long" + $cookieStore.get('long'));
} else {
alert("Something went wrong " + status);
}
//codeLatLng($rootScope.lat, $rootScope.long);
$(document).ready(function () {
$("#locationView").slideToggle();
});
});
};
}]);
希望这可以帮助你,谢谢。