2017-02-23 154 views
0

Я использую планировщик daypilot. Я хочу показать детали события во всплывающем окне при нажатии. Как я могу получить некоторую информацию из 1 события и установить всплывающее окно?в контроллере не может показывать содержимое во всплывающем окне с ng-repeat?

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>"); 
 
}

ответ

1

HTML, вы показываете в модальный диалог никогда не составитель Угловое. Таким образом, ничего не отображается, а простой текст, который вы предоставили. Вы должны позволить Angular скомпилировать шаблон сначала с использованием правильной области. После этого вы можете отобразить скомпилированный HTML. Смотрите угловые документы для получения дополнительной информации о $compile

Update:

Попробуйте этот код

var html = "<h1>Details</h1> ..."; 
var modalTemplateCompiler = $compile(html) 
var modalContent = modalTemplateCompiler($scope) 
$scope.$digest() 
modal.showHtml(modalContent[0]) 

Этот код тестировался. Вам также необходимо ввести $compile в контроллер. Кроме того, это может привести к ошибке Digest. В этом случае вам нужно создать новую область и расширить ее всеми необходимыми свойствами.

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.

+0

спасибо за ответ, я попытался использовать modal.showUrl ("eventClicked.html"); но есть ошибка: Ошибка при сбое: [$ injector: modulerr] !! – Fredj