I am currently writing a book on Angular and would like to know. I remember I had a lot of trouble on how to write a reusable component defined in a partial, and what to pass into the directive constructor.
It's been a few months, but I remember being confused by "compile" vs "link". I had a hell of a time figuring out which one I needed to use. I also was confused by the passing in of parameters, with weird syntax like "@", and "=" prepending the parameters.
One thing that I tried doing, that I figured would be common, was to access a model specified by ng-model, and to access the controller's scope. But even that was really confusing.
I've seen somebody do it by calling myModule.factory. I've seen an example on Stackoverflow that says all you need to do is something like var Todo = $resource('/api/1/todo/:id');. I'm not sure where I'm supposed to put this code. I want to be able to use the resource globally but I don't have access to $resource in the global namespace.
All I'm trying to do is make a simple blog that can interact with my backend. If you have this part of the book written I'd love to read it right now.
EDIT: I figured out how to do it I think. But I'd still love a more complete introduction to using Angular with a RESTful service.
Here's a simple example:
appServices.factory('Thing', function($http) {
var Thing = function(data) {
angular.extend(this, data);
}
Thing.all = function() {
return $http.get('/things).then(function(response) {
return new Thing(response.data);
});
}
Thing.get = function(id) {
return $http.get('/things/' + id).then(function(response) {
return new Thing(response.data);
});
}
Thing.delete = function(id) {
return $http.delete('/things/' + id).then(function(response) {
return new Thing(response.data);
});
}
Thing.create = function(data) {
return $http.post('/things', data).then(function(response) {
return new Thing(response.data);
});
}
Thing.update = function(data, id) {
return $http.put('/things/' + id, data).then(function(response) {
return new Thing(response.data);
});
}
return Thing;
});
In your controller, inject the service: function thingCtrl($scope, Thing) {
Thing.all().then(function(data) {
$scope.things = data;
});
}
thingCtrl.$inject = ['$scope', 'Thing']; function thingCtrl($scope, Thing) {
$scope.things = Thing.all()
}
thingCtrl.$inject = ['$scope', 'Thing'];Angular made a tutorial video on building a Twitter search app that may be helpful: https://www.youtube.com/watch?v=IRelx4-ISbs
I'd like to create a directive that would help me define directives. Sounds circular? I just want syntactic sugar to define 'components', in other words, to nicely package my code. I want to wrap together a piece of html, js and css under one name and invoke it as a HTML tag. That way I could better modularize my website. This needs to work in partials too.
What I don't like about Angular is that I's not easy to dynamically define/load stuff like directives and such. It all needs to be known beforehand, statically.