本文介绍了角uibModal,化解,未知提供商的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图揭露一个通用模式 - 采用了棱角分明的错误从原始属性。
Nothing too complicated, above. However, it is not working. If I remove the resolve
property from the object, the service works; however, if I include the resolve
property, I get the Unknown Provider error originating from that property.
有关文档的解析
属性如下:
(类型:Object) - 会员将得到解决,并传递到
控制器作为本地人;它相当于在决心财产
路由器。
的目的是能够提供一种在其DOM的利用这些特性的模态,例如模板
The objective is to be able to provide a template for the modal that utilizes these properties in its DOM, e.g. :
<div ng-controller="CustomModalController">
<div class="modal-header">
<h3 class="modal-title">{{title}}</h3>
</div>
<div class="modal-body">
{{message}}
</div>
<div class="modal-footer">
<button class="ad-button ad-blue" type="button" ng-click="confirmAction()"></button>
<button class="ad-button ad-blue" type="button" ng-click="cancelAction()"></button>
</div>
</div>
我想什么是导致抛出这个错误?
What am I missing that is causing this error to be thrown?
推荐答案
您有两个问题:
- 您需要在你的模式config来定义控制器
- 您的决心对象需要是地图
字符串
的函数
,其中字符串
是将被注入到你的模态的控制依赖的名称,函数
是将用于提供这种依赖性,当一个工厂函数控制器被实例化。
- You need to define the controller in your modal config
- Your resolve object needs to be a map of
string
:function
, wherestring
is the name of the dependency that will be injected into your modal's controller, andfunction
is a factory function that will be used to provide that dependency when the controller is instantiated.
的例子:
angular.module('myApp', ['ui.bootstrap'])
.controller('MyModalController', MyModalController)
.directive('modalTrigger', modalTriggerDirective)
.factory('$myModal', myModalFactory)
;
function MyModalController($uibModalInstance, items) {
var vm = this;
vm.content = items;
vm.confirm = $uibModalInstance.close;
vm.cancel = $uibModalInstance.dismiss;
};
function modalTriggerDirective($myModal) {
function postLink(scope, iElement, iAttrs) {
function onClick() {
var size = scope.$eval(iAttrs.size) || 'lg'; // default to large size
var title = scope.$eval(iAttrs.title) || 'Default Title';
var message = scope.$eval(iAttrs.message) || 'Default Message';
$myModal.open(size, title, message);
}
iElement.on('click', onClick);
scope.$on('$destroy', function() {
iElement.off('click', onClick);
});
}
return {
link: postLink
};
}
function myModalFactory($uibModal) {
var open = function (size, title, message) {
return $uibModal.open({
controller: 'MyModalController',
controllerAs: 'vm',
templateUrl : 'templates/CustomModal.html',
size: size,
resolve: {
items: function() {
return {
title: title,
message: message
};
}
}
});
};
return {
open: open
};
}
HTML
<script type="text/ng-template" id="templates/CustomModal.html">
<div class="modal-header">
<h3 class="modal-title">{{vm.content.title}}</h3>
</div>
<div class="modal-body">
{{vm.content.message}}
</div>
<div class="modal-footer">
<button class="ad-button ad-blue" type="button" ng-click="vm.confirm()">
confirm
</button>
<button class="ad-button ad-blue" type="button" ng-click="vm.cancel()">
cancel
</button>
</div>
</script>
<button modal-trigger size="'sm'" title="'Hello World!'" message="'This is a test'">
Click Me
</button>
这篇关于角uibModal,化解,未知提供商的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!