Используя Angular, я пытаюсь создать директиву, которая будет размещена на кнопке, которая запустит диалог поиска. Существует несколько экземпляров кнопки поиска, но, очевидно, мне нужен только один экземпляр диалогового окна. Диалог должен быть построен из URL-адреса шаблона и иметь собственный контроллер, но когда пользователь выбирает элемент, директива будет использоваться для установки значения.Как использовать угловую директиву для отображения диалога?
Любые идеи о том, как создать диалог с помощью собственного контроллера из директивы?
Вот что я пойти так далеко (в основном только директиву) ...
http://plnkr.co/edit/W9CHO7pfIo9d7KDe3wH6?p=preview
Вот HTML из приведенного выше plkr ...
<a href="" my-find="setPerson">Find</a>
Вот код из вышеуказанного plkr ...
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
var person = {};
person.name = 'World';
$scope.person = person;
$scope.setPerson = function(newPerson) {
person = newPerson;
$scope.person = person;
}
});
app.directive('myFind', function() {
var $dlg; // holds the reference to the dialog. Only 1 per app.
return {
restrict: 'A',
link: function (scope, el, attrs) {
if (!$dlg) {
//todo: create the dialog from a template.
$dlg = true;
}
el.bind('click', function() {
//todo: use the dialog box to search.
// This is just test data to show what I'm trying to accomplish.
alert('Find Person');
var foundPerson = {};
foundPerson.name = 'Brian';
scope.$apply(function() {
scope[attrs.myFind](foundPerson);
});
});
}
}
})
Это насколько я добрался. Я не могу понять, как создать диалог с помощью шаблона внутри директивы, поэтому он возникает только один раз и затем назначает ему контроллер. Я думаю, что я могу назначить контроллер внутри шаблона, но сначала мне нужно выяснить, как загрузить шаблон и вызвать наш настраиваемый плагин jQuery для создания диалога (у нас есть собственный взгляд & для диалогов).
Итак, я верю в вопрос, как загрузить шаблон внутри директивы? Однако, если есть другой способ мышления об этой проблеме, я был бы заинтересован в этом.