Вот как я изменил ваш код: рабочий плункер здесь
var dynamicDirective = angular.module('testapp', []);
dynamicDirective.controller('mycontroller', ['$scope', '$compile', function($scope, $compile) {
$scope.user={
firstName: '',
lastName: '',
age: ''
}
$scope.add = function() {
angular.element(document.getElementById('container'))
.append($compile("<textbox user='user'></textbox>")($scope));
}
$scope.read = function(){
console.log($scope.user);
}
}]);
dynamicDirective.directive('textbox', [function() {
return {
templateUrl: 'dynamictextbox.html',
scope: {
user: '='
},
controller: function($scope) {
}
};
}]);
dynamictextbox.html
<div>
First name: <input type="text" ng-model='user.firstName'/> <br/>
Last name: <input type="text" ng-model='user.lastName' /> <br/>
Age: <input type="text" ng-model='user.age' /> <br/>
</div>
пользовательский объект будет регистрироваться в консоли.