Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-动态编译指令实例_Angularjs - Fatal编程技术网

AngularJS-动态编译指令实例

AngularJS-动态编译指令实例,angularjs,Angularjs,是否可以从控制器函数中动态生成指令 我现在有这种东西(我知道它不起作用): self.untInfoWindowContent=函数(untd){ var eventData=LastReportedEventStore.lastReportedEvents[untID]; var元素=$compile(“”)(eventData); return-element.html(); }; eventData来自我的LastReportedEventStore服务中的一个键控对象变量,因此我希望可

是否可以从控制器函数中动态生成指令

我现在有这种东西(我知道它不起作用):

self.untInfoWindowContent=函数(untd){
var eventData=LastReportedEventStore.lastReportedEvents[untID];
var元素=$compile(“”)(eventData);
return-element.html();
};
eventData来自我的LastReportedEventStore服务中的一个键控对象变量,因此我希望可以将其用于指令中的范围绑定

在指令的Jasmine测试中,我正在编译指令的一个新实例以进行测试:

var scope = rootScope.$new();

scope.eventData = {
    UntID: 12345,
    UnitName: 'Lightning McQueen',
    Location: 'M4, London, heading NE at 35mph.',
    EventDTDisplay: '18:15:05',
    InJourney: true,
    UrrID: 1

};

var element = compile('<last-reported-event event-data="eventData"></last-reported-event>')(scope);
scope.$digest();
var scope=rootScope.$new();
scope.eventData={
联合国:12345,
UnitName:“闪电麦昆”,
地点:伦敦M4,以35英里/小时的速度向东北行驶,
EventDTDisplay:'18:15:05',
InJourney:没错,
乌里德:1
};
变量元素=编译(“”)(范围);
范围。$digest();
因此,我想从我的控制器功能做同样的事情,有人可以建议吗


谢谢

您应该使用
untInfoWindowContent
函数中的作用域进行编译您介意分享一个示例吗?基本上,这里是这个
var元素=$compile(“”)(eventData)代码应该使用类似
$compile(“”)(范围)的范围进行编译
@mindparse,您不应该在控制器中处理DOM。(直到你有信心就此断言向我提出质疑)。那么,你为什么不解释一下你真正想要实现的目标呢。更具体地说,您的
untInfoWindowContent
正在返回一个文本(由
.html
生成)-您编译指令的事实没有反映在返回的html中。更不用说你链接的不是一个范围(与你的测试用例不同,这是正确的)当然好的,我只是在试验,我理解你的评论。我的应用程序在地图旁边显示了我上次报告的事件指令列表(使用ng repeat),因此我只想能够选择一个项目,然后使用该指令生成的内容作为地图上相关标记的信息窗口中使用的内容。我希望这样,当选定指令的作用域上的数据更改时,infowindow内容也会更改(实时位置数据更新)。
var scope = rootScope.$new();

scope.eventData = {
    UntID: 12345,
    UnitName: 'Lightning McQueen',
    Location: 'M4, London, heading NE at 35mph.',
    EventDTDisplay: '18:15:05',
    InJourney: true,
    UrrID: 1

};

var element = compile('<last-reported-event event-data="eventData"></last-reported-event>')(scope);
scope.$digest();