2015-04-24 3 views
0

Как добавить функциональность для маршрута, например «api/things /: id», к следующему контроллеру CRUD AngularJS?Как добавить REST 'show' в Angular controller?

angular.module('maybeApp') 
.controller('MainCtrl', function ($scope, $http, socket) { 
$scope.awesomeThings = []; 

$http.get('/api/things').success(function(awesomeThings) { 
    $scope.awesomeThings = awesomeThings; 
    socket.syncUpdates('thing', $scope.awesomeThings); 
}); 

$scope.addThing = function() { 
    if($scope.newThing === '') { 
    return; 
    } 
    $http.post('/api/things', { name: $scope.newThing }); 
    $scope.newThing = ''; 
}; 

$scope.deleteThing = function(thing) { 
    $http.delete('/api/things/' + thing._id); 
}; 

$scope.$on('$destroy', function() { 
    socket.unsyncUpdates('thing'); 
}); 
}); 

ответ

2

Вы можете создать завод. Например:

var app = angular.module('myApp', []); 

app.factory('thingsFactory', function($http) { 
    var baseAddress = // address you need; 
    var url; 
    return { 
     getAll: function() { 
      url = baseAddress; 
      return $http.get(url); 
     }, 
     postThing: function(item) { 
      url = baseAddress; 
      return $http.post(url, item); 
     }, 
     deleteThing: function(id) { 
      url = baseAddress + id; 
      return $http.delete(url); 
     }, 
     ....... 
    } 
} 

Затем вводят thingsFactory в controller и использования. Например:

thingsFactory.deleteThing('id_that_you_need').success(function (result) { 
    // if the server respond 
    alert('Thing has been deleted'); 
}).error(function() { 
    alert('Error.... Please blah-blah-blah... :) ');  
}); 
+0

Я верю, что эта рекомендация верна, но я не использовал ее - отошел от Углового из-за проблемы с ответом на простые вопросы, подобные этому! – gallygator

0

Я рекомендую вам использовать ngResource и не использовать его непосредственно на вашем controller, это не должно быть controller ответственность, использовать service вместо и ввести эту услугу в ваш controller

angular.module('myApp'),['ngResource']) 
.factory('myService', function(){ 
var myService = $resource('/serviceUrl', {}, { 
     get: { 
     method: 'GET', 
     responseType: 'json' 
     }, 
     delete: {//... 
     } 
    }); 
    return { 
    getSomething: function(){ 
     return myService.get().$promise; 
    };  
}) 

.controller('MyController', function($scope, myService){ 
    myService.getSomething() 
    .then(function(data){ 
    $scope.myData = data; 
    } 
});