如何从AngularPOST变苗条?

How to POST from Angular to Slim?

我有以下代码,但它似乎不起作用。我试图寻找解决方案,但大多数都是较旧且非常具体的答案。

我到此为止:

  1. 模板通过配置加载到 ng-view 中。
  2. 表单在点击时提交。
  3. 没有任何反应。

我用网络中的 Google 控制台检查 POST,它没有触发。

我错过了什么?我从 this article.

获得了大部分代码

HTML 查看 即表格

<h2>Add new job</h2>
<form novalidate name="AddNewForm" method="post" action="">

    <input type="text" class="form-control" ng-model="job.title" placeholder="Title" required />
    <input type="text" class="form-control" ng-model="job.company" placeholder="Company" required />
    <input type="text" class="form-control" ng-model="job.description" placeholder="Description" required />
    <input type="text" class="form-control" ng-model="job.location" placeholder="Location" required />
    <br/>
    <button ng-disabled="AddNewForm.$invalid || isUnchanged(job)" ng-click="add_new(job)" class="btn">Save!</button>

</form>

Angular 配置控制器

(function() {

    angular
    .module('app')
    .config(function($routeProvider) {
        $routeProvider.when('/add-job', {
            templateUrl: 'templates/add-job.html',
            controller: AddController   
        });
    });

    function AddController($http, $location) {
        var that = this;

        that.master = {};
        that.activePath = null;

        that.add_new = function(job, AddNewForm) {
            $http.post('api/add_job', job).success(function () {
                alert("added!");
                that.reset();
                that.activePath = $location.path('/');
            });

            that.reset = function () {
                that.job = angular.copy(that.master);
            };

            that.reset();
        };
    }
})();

苗条API

require 'vendor/autoload.php';

$app = new \Slim\App; 

$app->post('/add_job', 'addJob');

$app->run();

function addJob() {
    $request = Slim::getInstance()->request();
    $job = json_decode($request->getBody());
    $sql = "INSERT INTO jobs (title, company, description, location) VALUES (:title, :company, :description, :location)";
    try {
        $db = getConnection();
        $stmt = $db->prepare($sql);  
        $stmt->bindParam("title", $job->title);
        $stmt->bindParam("company", $job->company);
        $stmt->bindParam("description", $job->description);
        $stmt->bindParam("location", $job->location);
        $stmt->execute();
        $job->id = $db->lastInsertId();
        $db = null;
        echo json_encode($job); 
    } catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
}

您在控制器中使用 controllerAs 语法,但在视图中使用 $scope 语法。 请注意,您 link 在控制器中使用 $scope 的文章用于匹配您当前视图设置的所有变量

您需要选择其中之一,以便视图与控制器兼容