嗨,我有" loc"范围内的属性,但我无法输出到控制台" loc"阵列
指令中的:
return {
scope:{
loc:'='
},
template: '<div id="gmaps"></div>',
link: function(scope, element, attrs) {
var map, infoWindow;
var markers = [];
var defaultLoc = new google.maps.LatLng(49.233614,28.47646199999997);
console.log(scope);
console.log(scope.loc);// undefined
控制器:
navigator.geolocation.getCurrentPosition(function(position) {
$scope.$apply(function() {
$scope.loc = [{ latitude:position.coords.latitude}, {longitude:position.coords.longitude}] ;
});
}
HTML:
<div hi-loc loc="loc"></div>
答案 0 :(得分:0)
我相信你使用示波器的方式...... 如果您需要双向数据绑定,请保持范围,但尝试使用
attrs.loc
如果您不需要更改loc变量,只需将范围更改为:
scope:{
loc:'@'
}
希望它有效:)
答案 1 :(得分:0)
在您登录控制台的时间点,控制器中的scope.loc
属性仍然是undefined
,因为直到$scope.$apply()
调用内部才设置它 - 其内容在下一个$digest
周期执行。
您仍然能够在控制台中查看完整范围对象上的loc
属性的原因是因为Chrome会保留一个&#34;生活参考&#34;对于内存中的该对象,您的loc
属性会在您看到它时填充(但在您明确console.log(scope.loc)
之后
您可以在属性上使用显式观察程序,并将新值记录到控制台:
scope.$watch(function() { return scope.loc }, function(newVal) {
console.log(newVal)
})