代码之家  ›  专栏  ›  技术社区  ›  kaka1234

AngularJS:AngularUI引导程序,将数据从模式传递到控制器

  •  0
  • kaka1234  · 技术社区  · 7 年前

    我已经正确设置了我的角度模态,现在我想把模态数据传回我的控制器。我使用下面的代码。 首先,我的控制器调用创建模式弹出窗口的工厂服务:

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

    我的服务是:

     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;         
      }
    

    请参阅我的jsFiddle: http://jsfiddle.net/aman1981/z20yvbfx/17/

    我想将我在模式中选择的姓名和性别传回控制器,控制器随后会填充我的页面。告诉我这里缺少什么。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Matej Marconak    7 年前

    AboutController ,请 ModalController myService 模态控制器 close 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"
            })
        }]);