My main question is simple :
I get errors when doing DOM manipulation within Controllers or Directives however, the functionality works perfectly.
Erro
As the error states, Angular disallows accessing DOM nodes in expressions.
CoffeeScript uses an implicit return if none is specified.
This means that for example the scope.open function in your code will:
return element.dialog('open');
Angular will detect this and throw the error.
If you add an explicit return it should solve the issue:
scope.open = =>
element.dialog('open')
return true