简体   繁体   English

AngularJS:Angular UI Bootstrap,将数据从模态传递到控制器

[英]AngularJS: Angular UI Bootstrap, pass data from modal to controller

I have correctly setup my angular modal, now I want to pass my modal data back to my controller. 我已经正确设置了角度模态,现在我想将模态数据传回控制器。 I am using the below code. 我正在使用以下代码。 First my controller calls my factory service that creates the modal popup: 首先,我的控制器调用我的工厂服务,该服务创建模式弹出窗口:

$scope.mymodal = myService.openModal(data);

My service is as: 我的服务是:

 function openModal (data) {
         var uData = null;
        if (data) {
            uData = {
                userName : data.setName,
                gender : data.gender
            }
        }
        var modalInstance = $modal.open({
            templateUrl: 'modal.html',
            controller: 'ModalController',
            backdrop: 'static',
            keyboard: false,
            resolve: {
                data: function () {
                    return uData;
                }
            }
        });

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

            });
        return modalInstance;         
  }

See my jsfiddle here for this: http://jsfiddle.net/aman1981/z20yvbfx/17/ 为此,请参阅我的jsfiddle: http : //jsfiddle.net/aman1981/z20yvbfx/17/

I want to pass name & gender that i select on my modal back to my controller, which then populates my page. 我想将我在模式中选择的姓名和性别传递回我的控制器,该控制器然后填充我的页面。 Let me know what is missing here. 让我知道这里缺少什么。

I updated AboutController , ModalController and myService with comments. 我用注释更新了AboutControllerModalControllermyService Main idea is return data from ModalController with close method. 主要思想是使用close方法从ModalController返回数据。 Fiddle 小提琴

    var app = angular.module('myApp', ['ui.router','ui.bootstrap']);

        app.controller('IndexController', function($scope, $log) {

        });

    app.controller("AboutController", ['$location', '$state', '$scope', '$filter','myService', function($location, $state, $scope, $filter, myService) {
     var data = "";
       $scope.mymodal = myService.openModal(data);

       // after modal is close, then this promise is resolve
       $scope.mymodal.then(function(resp){
            console.log(resp);
       })

    }]);

    app.controller("ModalController", function($location, $state, $scope, $filter, $modalInstance) {
          $scope.cancel = function () {
                $modalInstance.dismiss('cancel');    
                $state.go('index');
            };
             $scope.done = function () {
// return data on close modal instance                


$modalInstance.close({genger:$scope.gender,userName:$scope.userName});           
                };
        });

    app.factory('ApiFactory', function ($http) {
        var factory = {};


        return factory;
    });

    app.factory("myService",[ "$state", "$modal", "ApiFactory",
        function ($state, $modal, factory) {
                 var service = {
                openModal: openModal
           };

           function openModal (data) {
                 var uData = null;
                if (data) {
                    uData = {
                        userName : data.setName,
                        gender : data.gender
                    }
                }
                var modalInstance = $modal.open({
                    templateUrl: 'modal.html',
                    controller: 'ModalController',
                    backdrop: 'static',
                    keyboard: false,
                    resolve: {
                        data: function () {
                            return uData;
                        }
                    }
                });
                // on close, return resp from modal
                modalInstance.result.then(function (resp) {
                    return resp;
                }, function () {

                    });
                // return modal instance promise
                return modalInstance.result;


          }

          return service;
        }
    ]);  

    app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
       $urlRouterProvider.otherwise('/index');
      $stateProvider
        .state('index', {
          url: '^/index',
          templateUrl: 'index.html',
          controller: "IndexController"
        })
        .state('about', {
          url: '^/about',
          templateUrl: 'about.html',
          controller: "AboutController"
        })
    }]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将数据传递到angular.js UI引导模式控制器 - How to pass data into an angular.js UI bootstrap modal controller 如何将表单数据从角度ui bootstrap模式传递到视图 - How to pass form data from angular ui bootstrap modal to view Angular UI Bootstrap Modal在后台单击时将数据传递回父控制器/ ESC键盘关闭 - Angular UI Bootstrap Modal pass data back to parent controller on background click / ESC keyboard close 从另一个控制器动态更新Angularjs Bootstrap UI Modal的内容 - Dynamically updating contents of Angularjs Bootstrap UI Modal from another controller 如何将数据从模态内部控制器传递到AngularJs中的外部控制器 - How to pass data from inner controller of modal to outer controller in AngularJs AngularJS UI Bootstrap Modal将对象传递给控制器 - AngularJS UI Bootstrap Modal passing object to controller 如何使用角度ui模态将数据传递到控制器? - How to pass data to the controller using angular ui modal? Angular-ui模态,从$ http发送数据到模态控制器 - Angular-ui modal, sending data into modal controller from $http 将信息从Angular.js控制器传递到引导模式 - Pass information to bootstrap modal from Angular.js controller AngularJS angular ui router - 将自定义数据传递给控制器 - AngularJS angular ui router - Pass custom data to controller
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM