在控制器中无法使用 ng-repeat 在弹出窗口中显示内容?
in controller can't showing content in popup with ng-repeat?
我正在使用 daypilot scheduler 我想在单击时在弹出窗口中显示事件的详细信息..如何获取 1 个事件的一些信息并在弹出窗口中设置?
screenshot
$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 生成一个编译函数。它 returns 一个我们可以将范围传递给的函数。 HTML 然后使用提供的范围进行编译。在最后一步中,摘要被触发,模板已准备好显示。
我总是建议在此版本上使用指令,但我对 DayPilot 库一无所知。
我正在使用 daypilot scheduler 我想在单击时在弹出窗口中显示事件的详细信息..如何获取 1 个事件的一些信息并在弹出窗口中设置?
screenshot
$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 生成一个编译函数。它 returns 一个我们可以将范围传递给的函数。 HTML 然后使用提供的范围进行编译。在最后一步中,摘要被触发,模板已准备好显示。
我总是建议在此版本上使用指令,但我对 DayPilot 库一无所知。