I am using angular ui for bootstrap for its modals:
http://angular-ui.github.io/bootstrap/#/modal
I am opening a modal with a controller and templateUrl with:
var modalInstance = $uibModal.open({
    animation: true,
    templateUrl: $scope.templateUrl,
    controller: $scope.controller,
    size: 'lg',
    resolve: {
        formModel: item
    }
});
where formModel is the model I will use in the modal.
Here is the controller for the modal:
app.controller('commentCtrl', ['$scope', '$modalInstance', 'formModel', function ($scope, $modalInstance, formModel) {
    $scope.formModel = {};
    var loadFormModel = function () {
        if (formModel !== undefined) {
            $scope.formModel = formModel;
        }
    };
    loadFormModel();
}]);
This modal has child directives and needs to pass properties of formModel to them
template:
<div>
    <child model="formModel.Comment"></child>
</div>
but child is created before the modal's controller has loaded formModel. Inside the child I want to use model as:
app.directive('child', function () {
    return {
        restrict: 'E',
        template: '<textarea ng-model="model"></textarea>',
        link: linkFn,
        controller: controllerFn,
        scope: {
            model: '='
        }
    };
});
Edit:
I've found that I can do:
<div>
    <child model="formModel" property="Comment"></child>
</div>
...
app.directive('child', function () {
    return {
        restrict: 'E',
        template: '<textarea ng-model="model[property]"></textarea>',
        link: linkFn,
        controller: controllerFn,
        scope: {
            model: '=',
            property: '@'
        }
    };
});
Is there a better way to do this without the extra attribute?
Edit 2:
I have found where the bug is:
http://plnkr.co/edit/kUWYDvjR8YArdqtQRHhi?p=preview
See fItem.html for some reason having any ng-if causes the binding to stop working. I have put a contrived ng-if='1===1' in for demonstration
 
     
    