AngularJS中的ng-repeat,Mongoose,Express

时间:2014-09-08 16:18:28

标签: angularjs express mongoose

我正在学习MEAN堆栈。 制作simpe网络应用程序,我遇到了一个问题。

这是我的角度代码

<div>

<form class="somelecture" method="post" ng-submit="lecture()" name="lectureForm">

    <input ng-model="lecturetext" type="text" placeholder="text">

    <button type="submit" ng-disabled="lectureForm.$invalid">
        Send
    </button>
</form>

</div>

<div>
    <ul ng-repeat="lecture in lectures">
        <li>{{lecture.lecturetext}}</li>
    </ul>
</div>

这是控制器

angular.module('MyApp')
    .controller('AddCtrl', ['$scope', 'Addlecture', function($scope, Addlecture) {
        $scope.lecture = function() {
            Addlecture.lecture({
                lecturetext: $scope.lecturetext
            });
        };
    }]);

那是它的工厂

angular.module('MyApp')
    .factory('Addlecture', ['$http', '$location', '$rootScope', '$cookieStore', '$alert',
        function($http, $location, $rootScope, $cookieStore, $alert) {

            return {
                lecture: function(lecture) {
                    return $http.post('/api/lecture', lecture)
                        .success(function(data) {
                            $location.path('/add');

                            $alert({
                                title: '',
                                content: 'norm',
                                placement: 'bottom-left',
                                type: 'success',
                                duration: 3
                            });
                        })
                        .error(function() {
                            $alert({
                                title: '',
                                content: 'some wrong',
                                placement: 'bottom-left',
                                type: 'danger',
                                duration: 3
                            });
                        });
                }
            };

这是服务器快递上发生的事情

app.post('/api/lecture', function(req, res, next) {
    var lecture = new Lecture({
        lecturetext: req.body.lecturetext
    });
    lecture.save(function(err) {
        if (err) return next(err);
        res.send(200);
    });
});

我可以在我的数据库中看到发布文本正确添加,但ng-repeat并不显示它们的所有((讲座文本))。 我知道我的服务器代码有问题 - 但究竟是什么。 我还删除了app.get代码 - 导致它不正确。我的app.get代码在服务器上应该是什么样的,在ng-repeat中显示所有“讲座讲座”?

2 个答案:

答案 0 :(得分:0)

我认为你错过了标记处的标记,试试这个让我知道:

<div>
    <ul ng-repeat="lecture in lectures">
        <li>{{lecture.lecturetext}}</li>
    </ul>
</div>

答案 1 :(得分:0)

到目前为止,我发现您只是发送了一条没有数据从服务器发送到客户端的响应,您如何将讲座测试列表传递给客户端?

我的建议是发送一个json响应并在你的$ resource对象中读取它的流程如下:(假设你使用的是moongose)

app.post('/api/lecture', function(req, res, next) {
    var lecture = new Lecture({
        lecturetext: req.body.lecturetext
    });
    lecture.save(function(err) {
        if (err) return next(err);
        //nested operation, save and get list of lectures
        lecture.find({param: anyParam }, function(err, doc){
            if(err){
                return next(err); 
            }else{
                //send information as json
                res.send(200, {data: doc});
            }
        });
    });
});

在客户端可能是这样的:

var LectureEndPoint = $resource('/api/lecture');
var lecture = new LectureEndPoint();
lecture.$save(function(res){
 //return the value or do whatever you need to do to pass this information to your controller

});