使用$uibModal从工厂
Using $uibModal from a factory
我一直在玩使用uibModal从工厂,而不是使用它从我的控制器。对话框出现,字段数据在OK单击时返回到服务,但是,我不知道如何将数据返回到我的控制器,它将被添加到我的模型有指针吗?
下面是我的工厂代码:
'use strict';
angular.module('ngTableScopeApp')
.factory('DialogService', function($uibModal){
var DialogService = {};
DialogService.newObj = {};
DialogService.addNewItem = function(template, $q){
this.modalInstance = $uibModal.open({
templateUrl: template,
controller: function($scope, $uibModalInstance){
$scope.ok = function () {
$uibModalInstance.close($scope);
return this.newObj;
};
$scope.cancel = function () {
$uibModalInstance.dismiss('cancel');
return null;
};
}
});
};
return DialogService;
});
控制器代码:
'use strict';
/**
* @ngdoc function
* @name ngTableScopeApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the ngTableScopeApp
*/
angular.module('ngTableScopeApp')
.controller('MainCtrl', function (NgTableParams, DummyData, DialogService) {
var self = this;
self.data = DummyData.generateData(1);
var createUsingFullOptions = function() {
var initialParams = {
count: 10 // initial page size
};
var initialSettings = {
// page size buttons (right set of buttons in demo)
counts: [5, 10, 25, 50],
// determines the pager buttons (left set of buttons in demo)
paginationMaxBlocks: 13,
paginationMinBlocks: 2,
dataset: self.data //DummyData.generateData(1)
};
return new NgTableParams(initialParams, initialSettings);
};
self.customConfigParams = createUsingFullOptions();
self.addNewItem = function(){
DialogService.addNewItem('views/addNewItem.html', self);
};
});
您可以使用$uibModalInstance
服务上可用的close
方法,其中您可以在关闭弹出窗口时传递数据。然后你可以利用result
promise对象它会在modal关闭时被调用。从$uibModalInstance.close
方法传递的任何数据都在这里可用。请确保您正在返回$uibModal.open
方法返回的承诺。
DialogService.addNewItem = function(template, $q){
this.modalInstance = $uibModal.open({
templateUrl: template,
controller: function($scope, $uibModalInstance){
$scope.ok = function () {
$uibModalInstance.close({ data: 'OK Called' });
};
$scope.cancel = function () {
$uibModalInstance.close({ data: 'Cancel Called' });
};
}
});
};
return this.modalInstance;
};
控制器DialogService.addNewItem('views/addNewItem.html', self)
.result.then(function(data) {
console.log("data", data); // print { data: 'MyCustomData' }
});
<<p> 模态控制器/strong> $scope.cancel = function () {
$uibModalInstance.close({data: 'MyCustomData'});
};
相关文章:
- Angularjs工厂注入错误
- 如何将参数传递到angularJs中的工厂
- 为什么只有工厂在棱角分明的网站上被提及
- AngularJS:$q.dedefe()不能由工厂方法共享
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何使用异步调用更改工厂的变量
- 将变量传递到工厂
- 注入工厂时,Angular停止工作
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- 如何在AngularJS工厂中正确声明对象属性
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- Angular $injector:unpr with uibModal
- 注入第一个角度工厂
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 堆和工厂模式中的本地对象
- 使用2个控制器管理工厂JSON$http数据
- Http服务工厂将未定义的返回到Angular中的控制器
- AngularJS控制器在注入工厂时抛出错误
- 使用$uibModal从工厂