我正在使用daypilot调度程序,我想在单击时在弹出窗口中显示事件的详细信息。.我如何获取1个事件的一些信息并在弹出窗口中设置?
屏幕截图
$scope.schedulerConfig.onEventClicked = function(args){
var dp = $scope.scheduler;
var modal = new DayPilot.Modal({
onClosed: function(args) {
if (args.result) {
loadEvents();
}
//else console.log("error");
dp.clearSelection();
}
});
modal.showHtml("<h1>Details</h1><div ng-repeat='event in events' ng-
if='event.id == 1490'><div >{{ event.id }}</div><div >{{ event.text }}</div>
<div >{{ event.start }}</div> <div >{{ event.end }}</div><div >{{ event.resource }}</div></div>");
}
您在"模态"对话框中显示的HTML永远不会由Angular编译。因此,除了您提供的纯文本外,什么都没有。您需要首先使用适当的范围对Angular编译模板。之后,您可以显示编译的HTML。有关$ compile
的更多信息,请参见Angular文档更新:
尝试此代码
var html = "<h1>Details</h1> ...";
var modalTemplateCompiler = $compile(html)
var modalContent = modalTemplateCompiler($scope)
$scope.$digest()
modal.showHtml(modalContent[0])
此代码未经测试。您还需要将$compile
注入控制器。此外,这可能导致摘要错误。在这种情况下,您必须创建一个新的范围,并根据所需的所有属性扩展它。
var modalScope = $scope.$new()
// Use Lodash library here to extend the new scope
_.extend(modalScope, $scope)
var html = "<h1>Details</h1> ...";
var modalTemplateCompiler = $compile(html)
var modalContent = modalTemplateCompiler(modalScope)
modalScope.$digest()
modal.showHtml(modalContent[0])
该代码的作用是创建一个新的范围,通过编译模板所需的属性扩展它。然后,它从您提供的HTML中生成编译函数。它返回一个可以将范围传递到的函数。然后将HTML与提供的范围一起编译。在最后一步中,触发了摘要,并准备显示模板。
我总是建议在此版本上使用指令,但是我不知道Daypilot库。