- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一项从服务器获取数据的服务。成功检索数据后,我将传递给指令中的 $uimodal 。我的代码如下所述
问题是当我第一次运行我的应用程序时,控制台日志显示如下结果
输出 >> 之外调试 sizeList
输出>>未定义
输出 >> [对象,对象]
output >> [Object, Object]
内调试 sizeList 我推测这是由于同步导致 (3) 和 (4) 在 (1) 和 (2) 之后发生。我的问题是
谢谢
服务
angular.module('myApp')
.service('GeneralHelperService', function($http, $q) {
var model = this;
var uniqueSizes;
model.getSizeList = function() {
var url = 'api/size/' + input;
if (uniqueSizes) return $q.when(uniqueSizes);
return $http.get(url).then(function (data) {
console.log('GeneralHelperService getSize', data.data);
return uniqueSizes = data.data;
})
};
}
指令
angular.module('myApp')
.directive('aDirective', function ($modal) {
return {
restrict: 'E',
controller: function ($scope) {},
link: function (scope, el, attrs, modal) {
GeneralHelperService.getSizeList().then(function (sizeList) {
scope.sizeList = sizeList;
console.log('debug sizeList inside', JSON.stringify(scope.sizeList));
});
console.log('debug sizeList outside', JSON.stringify(scope.sizeList));
var modalInstance = $modal.open({
template: '<div>{{sizeList}}</div>',
size: 'sm',
controller: 'ControlModal as controlModal',
resolve: {
sizeList: function () {
console.log('resolve', scope.sizeList);
return scope.sizeList;
}
}
});
}
最佳答案
您的代码稍微复杂一些,因为 modal
解析基本上有助于在创建模态窗口之前解决异步( promise ),因此请更改 $modal 的
到resolve
.打开
resolve: {
sizeList: function(GeneralHelperService) {
return GeneralHelperService.getSizeList();
}
}
然后在您的 Controller ControlModal
中,您应该能够通过 sizeList
访问返回数据,并且不要忘记在您的 Controller 中进行依赖项注入(inject) sizeList
Controller 。
顺便说一句,刚刚注意到您在 $http.get
中返回了 uniqueSizes = data.data;
,请确保返回 data.data;
>
这是一个简单的 JSFiddle得到这个想法
关于javascript - Angular $uibmodal 异步解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843790/
我有各种菜单项,它们在单击其中任何一个时都使用相同的 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) { /**
我是一名优秀的程序员,十分优秀!