【发布时间】:2015-12-16 17:29:22
【问题描述】:
我目前正在使用 Angular.JS 开发一个小型应用程序 在我看来,我有以下按钮
<md-button class="md-primary" ng-click="editUser(user, $event)">Edit</md-button>
editUser 方法如下所示:
$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) {
});
};
现在对话框很好地显示了,并且还调用了 answer 函数,一切都符合预期。
但是,当我第二次单击该按钮时,不会执行 editUser 功能。好像按钮的 onClick 事件已在对话框关闭时被删除。
非常感谢任何有关解决此问题的帮助, 谢谢
【问题讨论】:
-
您在控制台日志中看到任何错误吗?
-
您的错误可能出现在代码的 ..some small logic 部分...这也可能是由于您正在调用异步方法
$scope.updateUser然后立即将$scope.userToEdit设置为一个空对象。$scope.updateUser可能没有时间完成它打算做的事情,您将传递的对象设置为空对象... -
没有控制台日志为空 :-( 更新实际上执行正确(由数据库反映)。我将添加小逻辑以进行澄清。
-
DialogController 是否也包含 editUser 的定义?
-
如果您在
function (user, $event) {之后放置一个console.log(user),它甚至会记录一些东西吗?
标签: javascript angularjs