繁体   English   中英

Ng提交使用Routeprovider调用了两次

[英]Ng-submit called twice with Routeprovider

我使用相同的form在数据库中创建和更新用户。 我可以正确更新,但是当我创建一个用户时,提交两次发送并在数据库中创建两个相同的用户。

我在RouteProvider有这个。

 .config(function($routeProvider) {
        $routeProvider
            .when("/users", {
                controller: "MainControlador",
                templateUrl: "templates/users.html"
            })
            .when("/user/:id", {
                controller: "UserControlador",
                templateUrl: "templates/user.html"
            })
            .when("/users/edit/:id", {
                controller: "UserControlador",
                templateUrl: "templates/form.html"
            })
            .when("/users/new", {
                controller: "NewUserControlador",
                templateUrl: "templates/form.html"
            })
            .when("/", {
                templateUrl: "templates/main.html"
            })
            .otherwise("/");
    })

这是我的form

<div>
      <form ng-submit="saveUser()">
        <input ng-model="user.name" type="text" required>
        <input ng-model="user.surname" type="text" required>
        <input ng-model="user.phone" type="text"required>
        <input ng-model="user.email"type="text" required>
        <input type="submit">
      </form>
 </div>

最后我用这个controller

//Controller Update
.controller("UserControlador", function($scope, $routeParams, UserAPI) {
        $scope.title = "Edit user";

        UserAPI.getOne($routeParams.id).success(function(data) {
            //Get Array First Element
            $scope.user = data[0];
        })

        $scope.saveUser = function() {
            var data = ({
                id: $routeParams.id,
                name: $scope.user.name,
                surname: $scope.user.surname,
                phone: $scope.user.phone,
                email: $scope.user.email
            });
            UserAPI.update(data).success(function(data) {
                $scope.user = data;
            })
        }

    })
    //Controller Create
    .controller("NewUserControlador", function($scope, UserAPI) {
        $scope.title = "Add user";
        $scope.saveUser = function() {
            var data = ({
                name: $scope.user.name,
                surname: $scope.user.surname,
                phone: $scope.user.phone,
                email: $scope.user.email,
            });
            UserAPI.create(data).success(function(data) {
                console.log(data);
                $scope.user = data;
            })
        }
    })

¿任何想法在这里会发生什么? 我尝试使用console.log,但显然一切正常。 我尝试使用Angular batarang来调试角度调用,但不起作用。

一个非常愚蠢的错误。 在我的PHP代码中,我有这个...

<?php
$conexion = new PDO("mysql:host=localhost;dbname=httpcrud;charset=utf8", "root", "");
$userName = $_GET['userName'];
$userSurname = $_GET['userSurname'];
$userPhone = $_GET['userPhone'];
$userEmail = $_GET['userEmail'];
$sql=$conexion->query("INSERT INTO users (name,surname,phone,email) VALUES('$userName','$userSurname','$userPhone','$userEmail')");
$json = json_encode($sql->execute());
echo $json;
?>

当我使用$sql->execute()query()时,提交重复insert 我删除$json= json_encode($sql->execute()); $json = json_encode($sql) ,最后一切正常。

您已经声明了两个控制器,一个用于保存用户( NewUserControlador ),一个用于更新(UserControlador) 这两个方法都称为saveUser(),它们在$ scope上声明。

由于名称相同,可能存在冲突。 您为什么不使用一个控制器进行这些操作? 毕竟,它们都是针对同一实体(用户)的所有CRUD操作。

如果仍然要使用两个不同的控制器,则可以使用一些日志记录来查找正在发生的事情,或者更大的主意是在UserControlador中重命名更新方法。

可以在这里找到有关范围的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM