У меня проблема, когда я пытаюсь связать объект javascript в атрибуте директивы.AngularJS привязывает объект javascript к атрибуту директивы
У меня есть контроллер, в котором я делаю запрос $ http.get для службы api rest, я получаю некоторые данные, среди которых строка JSON, представляющая маршрут для холста карты.
.controller('myController', ['$scope', '$http', function($scope,$http) {
$http.get(endpointUrl)
.success(function(data){
if(data.status == 'ok'){
$scope.itinerary = angular.fromJson(data.itinerary);
}
});
}]);
Если я вхожу $ scope.itinerary в консоли я вижу, что это действительный JavaScript Object
{"origin":"Piazza Adua, Firenze","destination":"Galleria degli Uffizi, Firenze","waypoints":[{"location":"Fiesole, Firenze","stopover":true},{"location":"Piazza Santa Croce, Firenze","stopover":true}],"optimizeWaypoints":false,"travelMode":"DRIVING"}
мне нужно, чтобы связать этот объект в атрибуте директивы.
.directive('map', function(){
return {
restrict: 'E',
scope: {
myItinerary: "="
},
templateUrl: 'templates/directive/map.html',
link: function(scope,el,attrs) {
console.log(attrs);
}
}
});
Это HTML
<map my-itinerary="itinerary"></map>
Когда я вхожу AttrS внутри функции директива ссылка атрибут myItinerary является строка «маршрут», а не объект, как я бы ожидать. Я попытался интерполировать маршрут с {{}}, но, как и следовало ожидать, это приведет к синтаксической ошибке. Я также попытался переключить '=' на '@' и привязать строку json вместо javascript-объекта, но значение attrs.myItinerary внутри директивы - пустая строка. Я видел много примеров для привязки объекта к директиве, и никто не имеет проблемы с тем же подходом, который я использовал. Поскольку я начал использовать угловые недавно, я хотел бы знать, ошибочен ли мой подход или почему он не работает. Заранее благодарим за помощь.
'attrs' будет только когда-либо быть строковым значением всех атрибутов. '$ scope.myItinerary' будет связанным значением. Все связанные значения доступны в методе 'link' в вашей' $ scope' – ste2425
Я попытался зарегистрировать scope.myItinerary внутри функции ссылки, но результат тот же: значение представляет собой строку «маршрут», а не объект, который я сохранил в $ scope.itinerary в контроллере – berno
Если вы выполните 'console.log (scope.myItinerary)', вы получите объект JavaScript. –