Дело в том, что dom содержимое директивы компилится раньше модели в рут элементе, в результате переписывается ссылка на контроллер модели в контроллере формы.
Результат сборки директивы
<div name="name" ng-model="model">
<input name="name" ng-model="model">
</div>
Код в angular'e v1.2.11, отвечающий за добавление контроллера.
/**
* @ngdoc function
* @name ng.directive:form.FormController#$addControl
* @methodOf ng.directive:form.FormController
*
* @description
* Register a control with the form.
*
* Input elements using ngModelController do this automatically when they are linked.
*/
form.$addControl = function(control) {
// Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
// and not added to the scope. Now we throw an error.
assertNotHasOwnProperty(control.$name, 'input');
controls.push(control);
if (control.$name) {
form[control.$name] = control;
}
};
Сначала добавиться контроллер из инпута, потом его перепишет контроллер из дива.
Решение
1. Удалить при компиляции атрибут name
http://plnkr.co/edit/NpOoWQFTtOo0ICpXm9kL?p=preview
2. Использовать вместо ng-model, какой либо другой атрибут
http://plnkr.co/edit/Yj42bdG0DwWdiShboF3T?p=preview