将ng-directive传递给Leaflet L.popup()。setContent()

时间:2014-08-14 02:28:43

标签: angularjs angularjs-directive leaflet

感谢您提出我的问题。

目标:将Angular指令传递给L.popup()的.setContent()方法

问题

我需要在指令上运行$ compile才能输入ng。但是像

这样的东西
.setContent($compile('<new_marker_form></new_marker_form'))

产生一个

Failed to execute 'appendChild' on 'Node': The new child element is null.

因为我敢打赌,在传单实际上附加任何HTML之前,ng正试图编译。

不确定这是否更适合Stack Overflow。如果我应该移动它,请告诉我。

1 个答案:

答案 0 :(得分:3)

您的示例中缺少结束>,不确定它是否只是问题中的拼写错误。

并且您还没有将已编译的元素链接到任何范围,$compile的结果不是元素,而是链接函数。您必须通过传递您希望元素与之绑定的范围对象(或至少一个空对象)来调用该函数。

var linkFn = $compile('<new_marker_form></new_marker_form>');
var element = linkFn({}); // or pass any scope object, may be $rootScope.$new() if you do not have one.
L.popup().setContent(element[0]); // use element[0] to pass a DOM instead of jQuery/jqLite object.

或一个班轮..

L.popup().setContent($compile('<new_marker_form></new_marker_form>')({}));

希望这有帮助。