我在控制器中有这个:
$scope.$watch('infos.location', function(newValue, oldValue) {
if (newValue.formatted_address == 'Erreur ...') {
var confirmPopup = $ionicPopup.confirm({
title: 'Geolocalisation',
template: 'Voulez-vous activer la géolocalisation ?'
});
confirmPopup.then(function(res) {
if (res) {
$cordovaPreferences.show().success(function(value) {
//alert("Success: " + value);
}).error(function(error) {
// alert("Error: " + error);
})
} else {
console.log('You are not sure');
}
});
}
}, true);
观看此输入:
<label class="item item-input">*
<ion-google-place placeholder="Veuillez saisir l'adresse du bien" ng-model="infos.location" current-location="true"/>
</label>
但是当我打开我的观点时,我有这个错误:
Error: undefined is not an object (evaluating 'newValue.formatted_address')
如何避免此类错误?是否有更好的解决方案来观察这个价值&#39; Erreur ......&#39;并开始调用confirmPopup?谢谢。
答案 0 :(得分:1)
您的'infos.location'
不是对象,可能您尚未对其进行初始化或将其初始化为字符串。
我想了解您如何初始化infos
对象或整个控制器。
您可以通过初始化infos
来解决此问题。
infos: {
location: {},
...
}
或者,如果 ion-google-place 初始化infos.location
,您只需检查infos.location
(即函数内的newValue
)是否(不是) undefined
,只是忽略(跳过)那种情况。
$scope.$watch('infos.location', function(newValue, oldValue) {
if (newValue && newValue.formatted_address == 'Erreur ...') {
...
}
}, true);
答案 1 :(得分:0)
这就是我弄清楚的方式:
$scope.infos = {
nom: '',
tel: '',
location: {},
lat: '',
lng: ''
};
稍后在我的控制器中:
$scope.$watch('infos.location', function(newValue, oldValue) {
if (newValue.formatted_address == 'Erreur ...') {
var confirmPopup = $ionicPopup.confirm({
title: 'Geolocalisation',
template: 'Voulez-vous activer la géolocalisation ?'
});
confirmPopup.then(function(res) {
if (res) {
$cordovaPreferences.show().success(function(value) {
//alert("Success: " + value);
}).error(function(error) {
// alert("Error: " + error);
})
} else {
console.log('You are not sure');
}
});
}
}, true);
当我进入我的视图时,infos.location未初始化。现在它有效。谢谢大家!