zoukankan      html  css  js  c++  java
  • angularJS使用rootscope创建父域和子模态框通用的属性与函数

    1. 在声明创建controller指明引用$rootscope

    reviewInterfaceDo.controller('reviewInterfaceDo', function($scope, $rootScope, $http, $uibModal, $uibModalInstance, toastr,parameterRecord,user)
    

     2. 在controller中声明创建rootscope型变量commonScope ,并配置此scope内的函数和属性

    //define root scope for modal use
    	var commonScope = $rootScope.$new();
    	commonScope.rootSaveScore  = function (userScoreList) {
    		if (userScoreList != null && userScoreList.length > 0) {
    			var fd = new FormData();
    			var userScoreRecords = angular.toJson(userScoreList);
    			fd.append('userScoreRecords', userScoreRecords);
    			$http.post('/reviewProcess/save', fd, {
    				transformRequest: angular.identity,
    				headers: {
    					'Content-Type': undefined
    				}
    			})
    			.success(function (data){
    				toastr.success("submit "+data+" score record success");
    			})
    			.error(function (data) {
    				toastr.error("submit failed");
    			});
    		}
    		
    	};
    

    3.  在打开模态框的方法中传入commonScope 

    $scope.openModal= function() {
    		$scope.getReviewedScore();
    		$uibModal.open({
    			templateUrl: 'save.html',
    			controller: 'saveController',
    			scope: commonScope,
    			resolve: {
    					parentModalInstance: function() {
    						return $uibModalInstance;
    					},
    					userScoreList : function () {
    						return $scope.userScoreList;
    					}
    				}
    		});
    	}
    

     4. 在子模态框的controller中接收scope

    saveController.controller('saveController', function($scope, $http, $uibModalInstance, parentModalInstance, toastr,userScoreList)
    

    5. 最后就可以在子模态框的controller中调用commonScope 中的方法和属性啦

    $scope.save= function() {
    		//save reviewed score
    		$scope.rootSaveScore($scope.userScoreList);
    		//close modal
    		$uibModalInstance.dismiss('cancel');
    		parentModalInstance.close();
    	};
    

      * 在使用resolve传值时:

    $scope.deleteVehicle = function(flag, instance){
    		debugger;
    		var modalInstance = $uibModal.open({
    			templateUrl: 'common-delete.html',
    			controller: 'VehicleDeleteCtrl',
    			animation: true,
    			resolve: {
    				instance: instance, //  对象可以直接穿
    				flag: function() { // 其他比如字符串需要使用函数传
    					return flag;
    				}
    			},
    			size: 'lg'
    		});
    		
    		// 按下标删除
    		modalInstance.result.then(function() {
    			$scope.vehicles.splice($scope.vehicles.indexOf(instance), 1);
    		
    

      

  • 相关阅读:
    ArrayList用法
    MessageBox
    将文本文件导入Sql数据库
    在桌面和菜单中添加快捷方式
    泡沫排序
    Making use of localized variables in javascript.
    Remove double empty lines in Visual Studio 2012
    Using Operations Manager Connectors
    Clear SharePoint Designer cache
    Programmatically set navigation settings in SharePoint 2013
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/6514075.html
Copyright © 2011-2022 走看看