gpt4 book ai didi

javascript - Angular Directive(指令)不会出现在 View 中,但出现在控制台中

转载 作者:行者123 更新时间:2023-11-28 19:05:09 24 4
gpt4 key购买 nike

我有如下代码,该代码是一个 Angular Directive(指令)。该代码用于通过使用坐标来计算两个地点之间的距离,我的问题是指令结果(scope.hasil = dist)不会出现在 View 中,而是出现在控制台中( >console.log(dist))。我应该怎么做才能让结果显示出来?谢谢:)

指令

dir.directive('distance', function () {
var calcRoute = function(ori,dest,cb) {
var dist;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var request = {
origin:ori,
destination:dest,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
cb(null, response.routes[0].legs[0].distance.value / 1000);
}
else {
cb("error");
}
});
};
return{
restrict:"E",
scope: true,
template:"{{hasil}} km",
link: function(scope, elm, attrs) {
var ori = attrs.ori;
var dest = attrs.dest;
calcRoute(ori,dest, function (err, dist) {
if (!err) {
scope.hasil = dist;
console.log(dist);
}else{
scope.hasil = err;
}
});
}
};
});

查看

<distance ori="-7.048443, 110.441022" dest="-7.048264, 110.440388"></distance>

最佳答案

使用$scope.$apply更改属性后刷新 View :

scope.$apply(function () {
scope.hasil = dist;
});

link函数被调用时,DOM实际上已经被填充了。因此,默认情况下更改 scope 值不会重新渲染 DOM。使用$apply将触发另一个$digest循环并更新 View 。

关于javascript - Angular Directive(指令)不会出现在 View 中,但出现在控制台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31839642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com