you should set third parameter of $watch()
as true
,
scope.$watch('files',function(){},true)
here is a nice article about $watch() vs. $watchCollection()
UPDATE
you cannot trigger watch there because you are using primitive object there here is usage of complex object within directive...