我想动态添加 Angular 自定义指令,但 $compile(directive) 产生的指令没有 2-way 绑定。
这是我的简化问题:我正在使用 MapBox,并且我想为标记的弹出窗口使用指令来显示例如标记的标题。MapBox 想要将 HTML 作为字符串放入弹出窗口中,所以我的想法是传递一个 $compiled 指令,例如$compile('<myDirective></myDirective>')($scope).html()
.
它用它的模板替换指令,但 {{values}} 没有解决。
我有这样的东西来创建弹出窗口
map.featureLayer.on('layeradd', function(e)
{
var marker = e.layer;
var popupContent = ctrl.createPopup(marker);
// popupContent should be HTML as String
marker.bindPopup(popupContent);
});
ctrl.createPopup(marker)
调用控制器的一个函数,它会:
this.createPopup = function(marker)
{
var popup = "<mapbox-marker-popup"
+" title = "+marker.feature.properties.title
+"</mapbox-marker-popup>";
// should return HTML as String
return ($compile(popup)($scope).html());
}
其中mapbox-marker-popup
是指定如下的指令:
/* ===== MARKER POPUP DIRECTIVE=========== */
.directive('mapboxMarkerPopup', function() {
return {
restrict: 'E',
template: [
"<p>{{title}}</p>",
].join(""),
scope:
{
title: '@'
}
}
})
无论如何... mapboxMarkerPopup不工作。标题显示为{{title}}
[UPDATE2 - {{title}} 未解决]
这是JSFiddle