2016-04-17 3 views
0

MEANスタックを使用して単純なTodoアプリケーションを作成するチュートリアルに従っています。コントローラとサービスを別々のファイルに移動するまでは、すべてうまくいきました。今では新しいTo Doを作成できますが、テキスト値は取得できません。 mongoDBデータベースに、新しいエントリが作成されているが、テキスト値がないことがわかります。私はコード全体を見てきましたが、ブラウザの開発者ツールで何も見つからず、エラーや警告も表示されません。ここ は、フォームのコードです:ここでフォームが自分のフォームからテキスト値を送信しないのはなぜですか?

<div id="todo-form" class="row"> 
    <div class="col-sm-8 col-sm-offset-2 text-center"> 
    <form> 
     <div class="form-group"> 
     <!-- Bind this value to formData.text in Angular --> 
     <input type="text" class="form-control input-lg text-center" placeholder="Add a todo" ng-model="formData.text"> 
     </div> 
     <button type="submit" class="btn btn-primary btn-lg" ng-click="createTodo()">Add</button> 
    </form> 
    </div> 
</div> 

は私のサービスである:ここでは

//todos.js service 
//the service is meant to interact with our api 
angular.module('todoService', []) 
    //simple service 
    //each function returns a promise object 
    .factory('Todos', function($http){ 
    return { 
     get : function() { 
     return $http.get('/api/todos'); 
     }, 
     create : function(todoData){ 
     return $http.post('/api/todos', todoData); 
     }, 
     delete : function(id){ 
     return $http.delete('/api/todos/' + id); 
     } 
    } 
    }); 

サービスを使用して、私のメイン・コントローラである:

//main.js 
var myApp = angular.module('todoController', []); 
myApp.controller('mainController', ['$scope', '$http', 'Todos', function($scope, $http, Todos){ 
    $scope.formData = {}; 

    //GET 
    //get all the todos by using the service we created 
    Todos.get() 
    .success(function(data){ 
     $scope.todos = data; 
    }); 
    //CREATE 
    $scope.createTodo = function(){ 
    Todos.create($scope.formData) 
      .success(function(data){ 
      $scope.formData = {}; 
      $scope.todos = data; 
      }); 
    } 

    //DELETE 
    $scope.deleteTodo = function(id){ 
    Todos.delete(id) 
     .success(function(data){ 
     $scope.todos = data; 
     }); 
    }; 
}]); 

最後には、ここにされますtodoを作成するルート:

var Todo = require('./models/todos'); 

//expose our routes to our app with module exports 
module.exports = function(app){ 
    //api 
    //get all todos 
    app.get('/api/todos', function(req, res){ 
    Todo.find(function(err, todos){ 
     if(err) 
     res.send(err); 
     res.json(todos); 
    }); 
    }); 

    //create to do 
    app.post('/api/todos', function(req, res){ 
    Todo.create({ 
     text: req.body.text, 
     done: false 
    }, function(err, todo){ 
     if(err) 
     res.send(err); 

     //get and return all todos after creating the new one 
     Todo.find(function(err, todos){ 
     if(err) 
      res.send(err); 
     res.json(todos); 
     }); 
    }); 
    }); 

何らかの理由でformData.text値がどこかに格納されず、理由がわかりません。

+0

ブラウザのコンソールにはどのようなエラーがありますか?あなたはコントローラとサービスを別々のファイルに入れる前にそれが動作していたと述べました。モジュールが正しい順序でロードされるように、それらのファイルを正しい順序でリンクしましたか? –

+0

デベロッパーツールを開くとブラウザにエラーが表示されないので、コードにエラーはありません。はい。インデックスファイルのリンクが正しく行われています。 – captain

答えて

0

角であるが普通のHTMLフォームの入力には名前属性が必要です。

関連する問題