템플릿에 지시문이 있습니다. 나는 기본적으로 리플릿지도에서 팝업으로 해당 템플릿에서 같은 HTML을 포함하려면JavaScript에서 각도 명령 초기화
<ul class="activity-stream">
<my-activity-stream-item ng-repeat="activity in vm.activities" activity="activity"></my-activity-stream-item>
</ul>
,하지만 난 방법을 코드에서 그것을 만드는 아무 생각이 : 그것은 좋은 일하고있어.
for (i = 0; i < activities.length; i++) {
var activity = activities[i];
var marker = L.marker([activity.location.lat, activity.location.lng]);
marker.type = activity.type;
marker.bindPopup('<my-activity-stream-item activity="activity"></my-activity-stream-item>');
marker.addTo(map);
}
난 정말 어떻게 든의 범위를 통과해야 같은 일에, 내가 느끼는 것을 기대하지 않았다 ...하지만 난 그것을 수행하는 방법에 관한 완전한 손실에 있어요 : 여기에 내가 뭘하려입니다 .
var app = angular.module('myPortal');
app.factory('TemplateService', TemplateService);
app.directive('myActivityStreamItem', myActivityStreamItem);
function myActivityStreamItem($compile, TemplateService) {
return {
restrict: 'E',
link: linker,
transclude: true,
scope: {
activity: '='
}
};
function linker(scope, element, attrs) {
scope.rootDirectory = 'images/';
TemplateService.getTemplate('activity-' + scope.activity.type).then(function(response) {
element.html(response.data);
$compile(element.contents())(scope);
});
}
}
function TemplateService($http) {
return {
getTemplate: getTemplate
};
function getTemplate(templateName) {
return $http.get('/templates/' + templateName + '.html');
}
}
-
EDIT (주 나는 단지 일주일 정도 각도 사용하고, 그래서 나에게 당신은 내가이 완전히 잘못 했어 생각하는 경우 알려 주시기 바랍니다) :을 나는 Chandermani의 충고를 따랐다 내 지시문을 ngInclude
으로 바 꾸었습니다 :
<ul class="activity-stream">
<li ng-repeat="activity in vm.activities" ng-include="'/templates/activity-' + activity.type + '.html'"></li>
</ul>
위대한 작품입니다! 나는 또한 ... 그러나 나는 확실히이 아니에요, 자바 스크립트에서 HTML을 컴파일 조쉬의 조언을 사용하려고
var link = $compile('<li ng-include="\'/templates/activity-' + activity.type + '.html\'"></li>');
var newScope = $rootScope.$new();
newScope.activity = activity;
var html = link(newScope);
marker.bindPopup(html[0]);
이 나타나는 팝업을 초래하지만, 팝업에 포함 된 HTML 코멘트입니다 : <!-- ngInclude: '/templates/activity-incident.html' -->
어쨌든 li
에있는 활동을 전달해야합니까?
편집 2 : 알 수 있습니다. Issue #4505에서 언급 한 바와 같이, 당신이 뭔가에 조각을 포장해야하는, 그래서 포장 내 ngInclude
div
A의 :
var link = $compile('<div><ng-include src="\'/templates/activity-incident.html\'"></ng-include></div>');
좋아요, 저는'$ compile '을 작동 시키려고했지만 범위에 문제가있었습니다. 나는이 기회를 줄 것이다 ... –
당신의 질문에서 볼 수있는 맥락을 바탕으로 이야기하기가 약간 어렵다. 마커 팝업을 추가하는 루프가 표시 한 원래 지시문과 어떻게 관련이 있는지 알 수 없습니다. – Josh
페이지의 목록에 '활동'을 넣을 예정이며지도 마커를 클릭 할 때 동일한 정보가 표시되기를 바랍니다. 따라서 현재 페이지에 표시되고 있지만지도에 표시 할 수는 없습니다. –