感谢您提出我的问题。
目标:将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。如果我应该移动它,请告诉我。
答案 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>')({}));
希望这有帮助。