- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想不出正常的标题。对此感到抱歉。
所以问题是,在一个大项目中,具有大的业务逻辑,有很多模式。每个新的模态都是相同的代码,几乎没有什么变化,比如 templateUrl、 Controller 之类的。这就是现在调用弹出窗口的方式:
return uibModal.open({
templateUrl: current.path + 'url.html',
controller: 'AppController',
windowClass: 'PopUp',
size: 'md',
resolve: {
disabled: [function () {
return scope.disabled;
}]
}
}).result.then(function( comment ){
record.comment = comment;
})
这个例行公事永远不会结束。所以我感兴趣的是 - 减少项目中相同代码(与这种情况相同)的最佳实践是什么?您应该使用服务吗?或者只是创建全局函数?
最佳答案
在 AngularJS 中,你应该始终避免使用全局函数。服务就是为此目的而创建的。我还使用 $uibModal
并且厌倦了一遍又一遍地编写同样的东西。
我制作了一个ModalService
,它使我能够抽象出许多重复的代码:
function ModalService() {
var ModalService = this;
ModalService.basicModal = function(options) {
var _options = options || {};
return $uibModal.open({
animation: angular.isDefined(_options.animation) ? _options.animation : true,
keyboard: angular.isDefined(_options.keyboard) ? _options.keyboard : true,
backdrop: _options.backdrop || 'static',
size: _options.size || 'sm',
templateUrl: _options.templateUrl || 'templates/modal-message.html', //default template in case user does not provide one
controller: _options.controller || ModalMessageCtrl, // a default controller in case user does not provide one
controllerAs: _options.controllerAs || 'vm',
resolve: options.resolve || {}
});
};
ModalService.simpleModal = function(options) {
...
};
}
您可以定义多种可以从 Controller 轻松调用的模式:
ModalService.basicModal();
ModalService.simpleModal();
// etc...
所有这些都可以接受可选参数来自定义模式:
ModalService.basicModal({
size: 'lg'
});
ModalService.simpleModal({
templateUrl: "my-custom-template.html",
controller: function($scope) {
//some custom inline controller
}
}).result.then(function() { //do something });
// etc...
关于javascript - AngularJS uibModal 可重用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50117591/
我有各种菜单项,它们在单击其中任何一个时都使用相同的 uibmodal。仅对于其中一个菜单选项,我希望 uibmodal 显示为较小的尺寸。我尝试了以下方法: $scope.profile = fun
我有各种菜单项,它们在单击其中任何一个时都使用相同的 uibmodal。仅对于其中一个菜单选项,我希望 uibmodal 显示为较小的尺寸。我尝试了以下方法: $scope.profile = fun
我正在使用 Bootstrap 的 $uibModal 在我的网络应用程序中制作表单。一切正常,只是在显示对话框后我无法关闭它。 我花了两天时间试图不在这里发布这样一个简单的问题,尤其是当我收到的相同
我一直在尝试使用工厂中的 uibModal,而不是在我的 Controller 中使用它。出现对话框,单击“确定”后字段数据返回到服务,但是,我不知道如何将数据返回到我的 Controller ,将数
我知道有很多关于这个问题的话题,但我尝试按照提供的解决方案进行操作,但没有成功。 我遵循的那个解决了错误Unknown provider: $uibModalInstanceProvider,是@Ge
我在模态中的模态上遇到问题。我需要让第二个模态位于第一个模态的顶部,但发生的情况是,第二个模态加载在第一个模态的后面。请帮忙。谢谢 用于打开模式的片段。 $uibModal.open({ te
我正在尝试集成 Angular 引导模式形式, 这是我的 Controller angular.module('app').controller('groupController',['groupSe
我想设置一个 httpInterceptor 以在 http 请求失败时显示一个常见的模式对话框。我正在使用 https://angular-ui.github.io/bootstrap/对于模态对话
angular .module('angProj') .controller('UserCtrl', ['$scope', '$uibModal', function ($sc
我开始学习如何使用 jasmine 进行单元测试。我在互联网上阅读了很多内容,但我无法解决我的问题。 我有一个带有 Controller 的指令。当我单击某个元素时,该 Controller 正在使用
我有一项从服务器获取数据的服务。成功检索数据后,我将传递给指令中的 $uimodal 。我的代码如下所述 问题是当我第一次运行我的应用程序时,控制台日志显示如下结果 在//输出 >> 之外调试 siz
我试图将 $uibModal 注入(inject)到我的项目中,但是当 Controller 加载时,我收到以下错误: Error: [$injector:unpr] Unknown provider
我有以下代码: vm.data = [{name: 'test-1'},{name: 'test-2'}]; function addRecords(data) { vm.data.push(
你能告诉我我的代码有什么问题吗?我得到了初始 HTML 页面,但是当我单击“打开”时,没有任何反应。甚至控制台也不会记录错误或任何其他更改。 应用程序.js var app = angular.mod
我想制作$uibModal下药时模态透明,停止拖动时模态不透明。 现在,我尝试了 jQuery fadeTo()和 fadeIn()可拖动停止事件的方法和 mouseup() 方法。模态变得透明但不会
我将 .draggable() 放在我的模式上,但它们只在第二次调用时起作用。模态是从服务文件中调用的。 服务文件: function callWarningModalService(data) {
尝试关闭由 $uibModal.open() 创建的模态窗口时,我收到 close is not a function 我已将问题减少到最少的代码: var app = angular.mod
我想不出正常的标题。对此感到抱歉。 所以问题是,在一个大项目中,具有大的业务逻辑,有很多模式。每个新的模态都是相同的代码,几乎没有什么变化,比如 templateUrl、 Controller 之类的
我创建了一个 AngularJs 指令,它将焦点设置到 html 元素。但它不适用于 $uibModal 元素: angular.module('ui.bootstrap.demo') .di
我在使用 ui.bootstrap.modal 时遇到这个错误: Error: $uibModal is undefined 模块: (function(angular) { /**
我是一名优秀的程序员,十分优秀!