Inject data from a modal form into a parent form in AngularJS?

I have a form with additional data fields displayed in a modal:

<form class="form-horizontal" name="newForm" ng-controller="FormCtrl" ng-submit="submit()">
  <label>Test</label>
  <div ng-controller="ModalCtrl">
    <a class="btn btn-link" ng-click="open()">Open</a>
    <ng-include src="'partials/modal.html'"></ng-include>
  </div>
</form>

includes:

<div modal="shouldBeOpen" close="close()" options="opts">
    <div class="modal-header">
        <h4>I'm a modal!</h4>
    </div>
    <div class="modal-body">
        <ul>
            <input type="text" tabindex="16" ng-model="someinput" name="someinput" size="32" class="validate[someinput]" />
        </ul>
    </div>
    <div class="modal-footer">
        <button class="btn btn-warning cancel" ng-click="close()">Cancel</button>
    </div>
</div>

JS:

var ModalCtrl = function ($scope) {

  $scope.open = function () {
    $scope.shouldBeOpen = true;
  };

  $scope.close = function () {
    $scope.shouldBeOpen = false;
  };

  $scope.opts = {
    backdropFade: true,
    dialogFade:true
  };

};

How can I read/inject/transfer the user input from the modal form into the main form?

What you need is to communicate between two controllers and this can be achieved by creating a service.

Using this as reference.

You could create a service as follows:

angular.module('myApp', [])
    .service('sharedInput', function () {
        var modalInput = "";

        return {
            getModalInput:function () {
                return modalInput;
            },
            setModalInput:function (value) {
                modalInput = value;
            }
        };
    });

Next, in your ModalCtrl() function, I assume that you will have a button to submit the input. Let us say that clicking this button invokes the "submitInput" function in the scope of ModalCtrl. You will write this function as:

$scope.submitInput = function() {
    sharedInput.setMOdalInput($scope.someinput);
}

...and in your FormCtrl() you will write the following code to read the modal input:

var input = sharedInput.getModalInput()

You also need to pass the parameter "sharedInput" to the ModalCtrl and FormCtrl just like how you passed $scope. And now you have your two controllers communicating.

I found a comment to an issue on GitHub with a plunker explaining the problem and the solution with angular-ui, without the shared service. Works like a charm.

http://plnkr.co/edit/ktfq0Y?p=preview