无法输出范围属性

时间:2015-10-09 23:23:47

标签: angularjs scope

enter image description here

嗨,我有" 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>

2 个答案:

答案 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)
})