2015-10-09 2 views
0

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> 

ответ

0

Я считаю, что это так, как вы используете рамки .. Если вам необходимо связывание двух способ передачи данных, чтобы область применения, как это, но попробуйте использовать

attrs.loc 

Если вам не нужно изменить переменную локацию, просто измените масштаб для:

scope:{ 
    loc:'@' 
} 

Надеется, что это работает :)

0

в момент времени, когда вы протоколирование консоли, scope.loc свойство в контроллере по-прежнему undefined, так как вы его не устанавливаете до тех пор, пока внутри звонка $scope.$apply() - содержимое которого выполняется в следующем цикле $digest.

Причина, по которой вы все еще можете увидеть свойство loc на полном объекте области видимости в консоли, заключается в том, что Chrome сохраняет «живую ссылку» на этот объект в памяти, а ваше свойство loc заполняется время вы можете увидеть его (но после того, как ваш явный console.log(scope.loc)

вы можете использовать явное Бодрствующего на имущество, а также регистрировать новое значение в консоли вместо:

scope.$watch(function() { return scope.loc }, function(newVal) { 
    console.log(newVal) 
}) 
Смежные вопросы