我有以下指令:
.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()
没有工作......我也认为访问elem[0]
是不正确的......
我真的很感激一些帮助!
谢谢!!