В контроллере не может показывать содержимое во всплывающем окне с помощью ng-repeat
Я использую планировщик дневного пилота. Я хочу показывать детали события во всплывающем окне при нажатии.. как я могу получить некоторую информацию о 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>");
}
1 ответ
HTML-код, отображаемый в модальном диалоговом окне, никогда не компилируется Angular. Таким образом, ничего не отображается, кроме простого текста, который вы предоставили. Вы должны позволить Angular сначала скомпилировать шаблон, используя соответствующую область видимости. После этого вы можете отобразить скомпилированный HTML. См. Angular docs для получения дополнительной информации о $ compile.
Обновить:
Попробуйте этот код
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.