在控制器中无法在带有ng重复的弹出窗口中显示内容?



我正在使用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库。

相关内容

  • 没有找到相关文章

最新更新