0
我已经写下了html和控制器代码,用于将表格单元格值设置为地理位置代码地址,但它不起作用。无法从角度控制器设置表格单元值
<tr ng-repeat="x in tabledata">
<td>{{ x.id }}</td>
<td>{{x.lat}}</td>
<td>{{x.lng}}</td>
<td ng-if="ctrl.getAddress(x.lat,x.lng)">{{addr}}</td>
</tr>
控制器方法如下。
this.getAddress = function(lat,lng) {
console.log('x.lat ' + lat + ' x.lng ' + lng);
var p = new Promise(function(resolve,reject){
var address;
var geocoder = new google.maps.Geocoder;
geocoder.geocode({'location': {lat: parseFloat(lat), lng: parseFloat(lng)}}, function(results, status) {
if (status === 'OK') {
if (results[0]) {
resolve(results[0].formatted_address);
} else {
resolve('No results found');
}
} else {
reject('Geocoder failed due to: ' + status);
}
});
}).then(function(v){
console.log('Resolved - Geo coder address ' + v);
$scope.addr = v;
$scope.apply;
}).catch(function(v){
console.log('Catch - Geo coder address ' + v);
});
return true;
};
我得到的地址值,但它没有得到分配给地址变量。
我认为这是因为addr变量是Promise函数的局部变量。你有没有尝试把它作为一个全局变量在控制器中?功能中未使用地址变量 – Chinito
。 addr在html代码中的表达式中是可变的,并且通过$ scope引用。 –
哦!好的。这就是为什么:D不能在没有变量声明的情况下访问控制器中的html变量。所以你必须首先在你的控制器中初始化它 – Chinito