次のディレクティブがあります。
.directive('confirmOnExit', function () {
return {link: function ($scope, elem, attrs) {
window.onbeforeunload = function () {
if ($scope.contextForm.$dirty) {
return "Unsaved data detected.";
}
}
}
};
})
ご覧のとおり、ディレクティブは form を直接参照するため、あまり適切に記述されていません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()
と思います...elem[0]
助けていただければ幸いです。
ありがとう!!