Angularjs $compile(自定义指令)生成的HTML不';t绑定{{values}}
我想动态添加角度自定义指令,但是$compile(directive)生成的指令没有双向绑定 这是我的简化问题:我正在使用MapBox,我想使用标记弹出窗口的指令来显示标记的标题。MapBox希望将HTML作为字符串放入弹出窗口中,因此我的想法是传递一个$compiled指令,类似于Angularjs $compile(自定义指令)生成的HTML不';t绑定{{values}},angularjs,angularjs-directive,angularjs-scope,mapbox,angularjs-compile,Angularjs,Angularjs Directive,Angularjs Scope,Mapbox,Angularjs Compile,我想动态添加角度自定义指令,但是$compile(directive)生成的指令没有双向绑定 这是我的简化问题:我正在使用MapBox,我想使用标记弹出窗口的指令来显示标记的标题。MapBox希望将HTML作为字符串放入弹出窗口中,因此我的想法是传递一个$compiled指令,类似于$compile(“”)($scope.HTML()) 它用它的模板替换指令,但是{{values}}没有被解决 我有这样的东西来创建弹出窗口 map.featureLayer.on('layeradd', func
$compile(“”)($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());
}
无论如何。。。mapboxMarkerPopup不工作。标题显示为{{title}}
[更新2-{{title}}未解决]
以下是您需要返回
元素而不是返回该元素的html
的。仅返回html永远不会带有角度双向绑定。通过使用编译对象,可以保持绑定工作
代码
this.createPopup = function(marker) {
var popup = "<mapbox-marker-popup" +
"title = '" + marker.feature.properties.title + "'"
+ "</mapbox-marker-popup>";
return ($compile(popup)($scope)[0]);
};
this.createPopup=函数(标记){
var popup=“如果有一个plunker或摆弄您的代码会很好吗?好的,完成了!我在问题中添加了链接,我发现我必须做$compile(“”)($scope).html()
。但是,指令的内容没有绑定,所以它仍然不起作用。我已经更新了我的小提琴。@DeLac检查我添加的答案great!完美..谢谢!我不太清楚$compile是如何工作的。@DeLac我很想解释一下..但是它已经在很多地方解释过了,所以我添加了一个链接我的答案..你可以参考它。。
this.createPopup = function(marker) {
var popup = "<mapbox-marker-popup" +
"title = '" + marker.feature.properties.title + "'"
+ "</mapbox-marker-popup>";
return ($compile(popup)($scope)[0]);
};