реализации Детали:проверка несохраненных данных формы в angularjs (несколько форм с использованием UI-маршрутизатор)
Я использую UI-маршрутизатор для загрузки формы страницы в UI-просмотра дел. Я сослался на отличный пример на Andres Ekdahi. Как я могу выполнить грязную проверку на нескольких формах с помощью той же директивы?
form1
<form name="myForm" ng-controller="Controller" confirm-on-exit>
form2
<form name="iForm" ng-controller="Controller" confirm-on-exit ng-model="myModel">
app.js (директива)
myApp.directive('confirmOnExit', function() {
return {
link: function($scope, elem, attrs) {
// condition when back page is pressed
window.onbeforeunload = function(){
if ($scope.myForm.$dirty) {
return "The formI is dirty, do you want to stay on the page?";
}
}
// condition when user try to load other form (via icons)
$scope.$on('$stateChangeStart', function(event, next, current) {
if ($scope.myForm.$dirty) {
if(!confirm("myForm. Do you want to continue ?")) {
event.preventDefault();
}
}
if ($scope.iForm.$dirty) {
if(!confirm("iform. Do you want to continue ?")) {
event.preventDefault();
}
}
});
}
};
});
Ошибка:
Первый раз при загрузке страницы, грязного значение $ является ложный. и я заполняю детали формы и щелкаю третий значок (файл), и я получаю ошибку для второй формы грязной проверки if ($scope.iForm.$dirty)
и для $dirty
в предупреждении.
angular.js:12520 TypeError: Cannot read property '$dirty' of undefined
и
<form name="iForm" ng-controller="Controller" confirm-on-exit="" ng-model="myModel" class="ng-pristine ng-untouched ng-valid ng-scope">
Демо: Plunker
Можете ли вы объяснить мне, что ищет '$ scope [attrs.name]' look? применяется ли это только для изменения данных формы или для любого пользователя? –
@ Mad-D, который выведет имя формы и будет искать область 'controlName' внутри контроллера. –
Спасибо, сэр, я думаю, это именно то, что мне нужно было сделать. –