devolver datos del service de dialog modal de angularjs

Soy bastante nuevo en AngularJS y tengo un problema con la devolución de datos de un service de dialog modal. Básicamente, copié el service de Dan Wahlin http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an-angularjs-modal-service.aspx y lo llamé desde mi controller.

myApp.controller('MyController', function($scope, ModalService) { window.scope = $scope; $scope.mydata = {name: ""}; $scope.showModal = function () { var modalOptions = { closeButtonText: 'Cancel', actionButtonText: 'Save', headerText: 'Save Dialog' } ModalService.showModal({}, modalOptions).then(function (result) { }); } }); 

Entonces tengo mi parcial así:

 <div class="modal-header"> <h3>{{modalOptions.headerText}}</h3> </div> <form ng-submit="modalOptions.submit()"> <div class="modal-body"> <label>Name</label> <input type="text" data-ng-model="mydata.name"> </div> <div class="modal-footer"> <button type="button" class="btn" data-ng-click="modalOptions.close()">{{modalOptions.closeButtonText}}</button> <button type="submit" class="btn btn-primary">{{modalOptions.actionButtonText}}</button> </div> 

Este modal se invoca así:

 <button class="btn btn-primary hidden pull-right" id="save" data-ng-click="showModal()">Save</button> 

Entonces mi pregunta es ¿cómo devuelvo el valor del campo de nombre al controller? He buscado en toda la web y todos los ejemplos tienen la function que abre el modal residen dentro del controller, lo que lo hace mucho más fácil ya que $ scope del controller también existe en la function que abre el modal.

Traté de agregar el siguiente código a la function 'mostrar' en el service, pero no funcionó.

  tempModalDefaults.resolve = function($scope) { mydata = function () { return $scope.mydata; } } 

Gracias

PD. Cambié el nombre de modalService a ModalService en mi código, por lo que no es un error tipográfico. El modal se abre y se cierra como debería, simplemente no puedo pasar el valor del campo al controller.

En su button, agregue data-ng-click="modalOptions.ok(mydata)"

 <button type="submit" class="btn btn-primary" data-ng-click="modalOptions.ok(mydata)">{{modalOptions.actionButtonText}}</button> 

Y puedes getlo de:

 ModalService.showModal({}, modalOptions).then(function (result) { console.log(result.name); }); 

MANIFESTACIÓN

Si desea usar la function modalOptions.submit , necesita cambiar un poco su código

En su HTML, pase la function mydata a modalOptions.submit :

 <form ng-submit="modalOptions.submit(mydata)"> 

Su service de model, reemplace en la function de show :

 return $modal.open(tempModalDefaults); //remove the .result 

Su controller:

 $scope.showModal = function () { var modalOptions = { closeButtonText: 'Cancel', actionButtonText: 'Save', headerText: 'Save Dialog', submit:function(result){ $modalInstance.close(result); } } var $modalInstance = ModalService.showModal({}, modalOptions); $modalInstance.result.then(function (result) { console.log(result.name); }); } 

MANIFESTACIÓN