я получил следующую директиву:Параметр эль функции связующей
.directive('confirmOnExit', function() {
return {link: function ($scope, elem, attrs) {
window.onbeforeunload = function() {
if ($scope.contextForm.$dirty) {
return "Unsaved data detected.";
}
}
}
};
}
)
Как вы можете видеть, что директива не очень хорошо написана, как он обращается непосредственно к форме «contextForm».
Что я хотел сделать, это что-то немного более общий (так что я мог бы также использовать его в других формах):
.directive('confirmOnExit', function ($window) {
return {link: function ($scope, elem, attrs) {
// Make sure code is only executed if directive is place on a form
// Should I even do this here??
if (elem[0].tagName == "FORM") {
var form = elem[0];
$window.onbeforeunload = function() {
if (form.className.indexOf("ng-dirty") > -1) {
return "Unsaved data detected.";
}
}
}
};
}
)
Вы заметите, что код все еще довольно некрасиво, так как form.hasClass («ng-dirty») или form. $ dirty() не работает ... Я также думаю, что доступ к элементу [0] неверен ...
Я очень благодарен за помощь!
Спасибо!