Obecnie pracuję w małej INFORMACYJNA wykorzystaniem angularjs Moim zdaniem mam następujący przyciskangularjs funkcję o nazwie tylko najpierw kliknąć onClick
<md-button class="md-primary" ng-click="editUser(user, $event)">Edit</md-button>
metoda editUser wygląda mniej więcej tak:
$scope.editUser = function (user, $event) {
$scope.userToEdit = user;
$mdDialog.show({
controller: DialogController,
targetEvent: $event,
templateUrl: '/js/modules/user/views/edit.tmpl.html',
parent: angular.element(document.body),
clickOutsideToClose: true,
scope: $scope
})
.
then(function (answer) {
if (answer == "save") {
for (right in $scope.allSystemRightsStatements) {
if ($scope.allSystemRightsStatements[right].selected) {
if($scope.userToEdit.rights==null){
$scope.userToEdit.rights = [];
}
$scope.userToEdit.rights.push($scope.allSystemRightsStatements[right]);
}
}
$scope.updateUser($scope.userToEdit);
}
$scope.userToEdit = {};
}, function() {
$scope.userToEdit = {};
});
};
$scope.updateUser = function (user) {
//userService.updateUser makes a $http PUT request
var promise = userService.updateUser(user);
promise.then(function (result) {
$mdToast.show(
$mdToast.simple(result.message)
.position($scope.getToastPosition())
.hideDelay(3000)
);
}, function (reason) {
$mdToast.show(
$mdToast.simple(reason)
.position($scope.getToastPosition())
.hideDelay(3000)
);
}, function (update) {
});
};
Teraz okno jest ładnie wyświetlane, a funkcja odpowiedzi jest również wywoływana, wszystko zgodnie z oczekiwaniami.
Jednak po ponownym kliknięciu przycisku funkcja editUser nie jest wykonywana. Tak jakby zdarzenie onClick z przycisku zostało usunięte przy zamknięciu okna dialogowego.
Każda pomoc w rozwiązywaniu tego problemu jest bardzo ceniona, Dzięki
widzisz błąd w dzienniku konsoli? –
Twój błąd może być w ** .. małej logice ** części twojego kodu ... Może to być również spowodowane tym, że wywołujesz metodę asynchroniczną z '$ scope.updateUser', a następnie od razu ustawiając '$ scope.userToEdit' na obiekt empy. '$ scope.updateUser' może nie mieć czasu, aby zakończyć to, co zamierzał zrobić i ustawić przekazany obiekt na pusty obiekt ... – ezcoding
Żaden dziennik konsoli nie jest pusty :-( Aktualizacja jest rzeczywiście wykonywana poprawnie (jak zostało to odzwierciedlone w bazie danych) Dodam małą logikę do wyjaśnienia – bwright