Вернуть выбор из модальной фабрики Angular Bootstrap, используя контроллер как

Я пытаюсь использовать модальный диалог в качестве списка выбора. У меня есть модальный диалог, настроенный как фабрика.

Как я могу получить код на http://plnkr.co/edit/fVpNtrr4Ez68yWYUlgnO?p=preview чтобы вернуть выбранного человека из модального окна?

var selectModal = function ($modal) {
        function show(personList) {
            var modalOptions = {
                templateUrl: "select-modal.html",
                controller: selectModalInstanceCtrl,
                controllerAs: "modal",
                windowClass: "ab-modal-window",
                resolve: {
                    personList: function () { return personList; }
                }
            };

            var modalInstance = $modal.open(modalOptions);

            modalInstance.result.then(function (person) {
                return person;
            });
        }

        return {
            show: show
        };
};


var selectModalInstanceCtrl = function ($modalInstance, personList) {
  var modalVm = this;

    modalVm.personList = personList;

    modalVm.selectPerson = function (person) {
        $modalInstance.close(person);
    };

    modalVm.ok = function () {
        $modalInstance.dismiss("ok");
    };
};


var mainCtrl = function (selectModal)
{
  var vm = this;

  vm.personList = ['Tom','Dick','Harry','Jane'];
  vm.selectedPerson = null;

    vm.showSelectModal = function () {
        vm.selectedPerson = selectModal.show(vm.personList, vm.selectedPerson);
    };

};

selectModalInstanceCtrl.$inject = ["$modalInstance", "personList"];
selectModal.$inject = ['$modal'];
mainCtrl.$inject = ['selectModal'];

angular.module('app', ['ui.bootstrap']);
angular.module('app').factory('selectModal', selectModal);
angular.module('app').controller('mainCtrl', mainCtrl);

В строке 18 в script.js выбранный человек есть, но я не могу передать его обратно на главный контроллер.


person Ulfius    schedule 24.06.2015    source источник


Ответы (1)


// Здесь находится код

var selectModal = function ($modal) {
   function show(personList) {
        var modalOptions = {
            templateUrl: "select-modal.html",
            controller: selectModalInstanceCtrl,
            controllerAs: "modal",
            windowClass: "ab-modal-window",
            resolve: {
                personList: function () { return personList; }
            }
        };
        var modalInstance = $modal.open(modalOptions);
        return modalInstance;
    }

    return {
        show: show           
    };
};


var selectModalInstanceCtrl = function ($modalInstance, personList) {
var modalVm = this;

modalVm.personList = personList;

modalVm.selectPerson = function (person) {
    $modalInstance.close(person);
};

modalVm.ok = function () {
    $modalInstance.dismiss("ok");
};
};


var mainCtrl = function (selectModal)
{
    var vm = this;
    vm.personList = ['Tom','Dick','Harry','Jane'];
    vm.selectedPerson = null;

    vm.showSelectModal = function () {
       var modalInstance = selectModal.show(vm.personList);
       modalInstance.result.then(function (person) {
           vm.selectedPerson = person;
       });
    };
 };

 selectModalInstanceCtrl.$inject = ["$modalInstance", "personList"];
 selectModal.$inject = ['$modal'];
 mainCtrl.$inject = ['selectModal'];

 angular.module('app', ['ui.bootstrap']);
 angular.module('app').factory('selectModal', selectModal);
 angular.module('app').controller('mainCtrl', mainCtrl);
person Vijayabaskaran M    schedule 25.06.2015