繁体   English   中英

我无法理解这段代码的工作流程

[英]I can't understand the workflow of this code

我正在做一个在线教程,他们教您使用MEAN制作一个简单的Web应用程序。下面的代码用于编辑给定的JSON对象集合(此处的视频为JSON对象)该集合位于/api/videos单击href="/#/video/{{video._id}} ,将我带到form.html,我可以选择编辑JSON对象的“ title”和“ description”参数。似乎不明白的是:

a)为什么需要(问题下面的完整代码)

var Videos = $resource('/api/videos/:id', { id: '@_id' },
         {
            update: { method: 'PUT' }
        });

由于我在href="/#/video/{{video._id}}上,因此我无法直接从网址中获取ID

var Videos=$resource('api/videos)   

Videos.get({ id: $routeParams.id }, function(video){
            $scope.video = video;
        });

b)Wayt是工作流(即何时正确发出了router.get()请求,何时发出了router.put()请求)据我说,当我单击保存按钮时,控制器向API发出了放置请求但我不知道何时发出router.get()请求

我正在尝试阅读快速文档和角度文档,但它们似乎无法解释工作流程。 您能否也请告诉我我应该阅读些什么以获得更好的理解?

这是form.html代码

<h1>Add a Video</h1>

<form>
    <div class="form-group">
        <label>Title</label>        
        <input class="form-control" ng-model="video.title"></input>
    </div>
    <div>
        <label>Description</label>
        <textarea class="form-control" ng-model="video.description"></textarea>
    </div>
    <input type="button" class="btn btn-primary" value="Save" ng-click="save()"></input>    
</form>

这是控制器代码

app.controller('EditVideoCtrl', ['$scope', '$resource', '$location', '$routeParams',
    function($scope, $resource, $location, $routeParams){   
        var Videos = $resource('/api/videos/:id', { id: '@_id' },
         {
            update: { method: 'PUT' }
        });

        Videos.get({ id: $routeParams.id }, function(video){
            $scope.video = video;
        });

        $scope.save = function(){
            Videos.update($scope.video, function(){
                $location.path('/');
            });
        }
    }]);

这是API端点代码

router.get('/:id', function(req,res){
    var collection =db.get('videos');
    collection.findOne({_id: req.params.id},function(err,video){
        if(err) throw err;
        res.json(video);
    });
});
router.put('/:id', function(req, res){
     var collection=db.get('videos');
     collection.update({_id:req.params.id},
     {title: req.body.title,
     description: req.body.description
     },
     function (err,video)
     {if (err) throw err;

        res.json(video);
     });
 });

好吧,根据$ resouce的AngularJS文档 ,$ resource是:

工厂创建一个资源对象,该资源对象使您可以与RESTful服务器端数据源进行交互。

换句话说,这是RESTful服务操作的快捷方式。 下面的代码创建了一个与API端点的接口,以使REST操作更容易实现。 一旦有了这个:

var User = $resource('/user/:userId', {userId:'@id'});

这样做更容易:

User.get({userId:123}, function(user) {
  user.abc = true;
  user.$save();
});

因为RESTful是一个标准,而$resource是该标准中Angular对API消耗的实现。 在他的内部,根据您构想和选择的操作,使用proper标头和方法提出了一个异步请求。

暂无
暂无

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

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