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値がどこかに格納されず、理由がわかりません。
ブラウザのコンソールにはどのようなエラーがありますか?あなたはコントローラとサービスを別々のファイルに入れる前にそれが動作していたと述べました。モジュールが正しい順序でロードされるように、それらのファイルを正しい順序でリンクしましたか? –
デベロッパーツールを開くとブラウザにエラーが表示されないので、コードにエラーはありません。はい。インデックスファイルのリンクが正しく行われています。 – captain