2016-10-10 65 views
0

我在做一個在線教程,他們教你使用MEAN製作一個簡單的web應用程序。下面的代碼用於編輯給定的JSON對象集合(視頻是JSON對象這裏) 集合在 /api/videos 所以我必須點擊一個href="/#/video/{{video._id}}這需要我到form.html,我可以選擇編輯JSON對象的'標題'和'描述'參數。 似乎我無法理解的是:我無法理解此代碼的工作流程

一)這是爲什麼(全在問題下面的代碼)需要

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)Whait是工作流(即當是router.get()請求正好製成,)提出的router.put()請求 根據我的時候,當我點擊保存按鈕控制器發出放置請求t o的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); 
    }); 
}); 

回答

1

那麼,根據AngularJS docs for $resouce,$資源是:

創建資源對象的工廠,可讓您與服務器端數據源進行交互。

換言之,它是RESTful服務操作的捷徑。下面的代碼創建與API端點的接口,以使REST操作更容易完成。 一旦你有這樣的:

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

是很容易做到這一點:

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

因爲REST風格是標準的,並且$resource是角的實現的API在這個標準中的消耗。在他的內部,根據您所配置和選擇的操作,使用propper頭文件和方法進行了一個assynchronous請求。