AngularJS的新手,似乎无法找出此错误的含义。我发现其他一些人也有相同的错误,但似乎他们的问题与我的问题无关。
未知提供程序:AngularJS中的$ modalProvider <-$
modal错误
(似乎我有最新的ui-bootstrap版本)
其他所有问题似乎都与模态有关,但我似乎无法从该模态开始,因此我认为这些问题无关。请告诉我我是否错误以及情况如何:
使用AngularUI引导程序模态的AngularJS中的范围问题
Angular UI模式的范围问题
我ui-bootstrap-tpls-0.6.0.min.js
从这里获取了脚本:https : //github.com/angular-
ui/bootstrap/tree/gh-pages#build-files
,我什至尝试添加ui- bootstrap-0.6.0.min.js
脚本,并认为可能需要。虽然如果我没看错的话,看来如果我选择了ui- bootstrap-0.6.0.min.js
脚本,我还需要在这里抓取所有模板https://github.com/angular-
ui/bootstrap/tree/master/template 这似乎是如果我根据错误仅使用该脚本,则为:
Error: Failed to load template: template/modal/window.html
Error: Failed to load template: template/modal/backdrop.html
为了简单地解释结构等并在此处粘贴所有代码,我创建了一个包含所有内容的插件。
http://plnkr.co/edit/yg3G8uKsaHNnfj4yNnJs?p=preview
错误(可以通过在打开控制台的情况下在plunker上测试代码来查看):
Error: Unknown provider: $modalInstanceProvider <- $modalInstance
at Error (<anonymous>)
at http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:30:24
at Object.c [as get] (http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:27:310)
at http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:30:109
at c (http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:27:310)
at d (http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:27:444)
at Object.instantiate (http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:29:80)
at http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:53:80
at http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:44:136
at m (http://run.plnkr.co/8OIh0YtLn1dg9OvR/angular.min.js:6:494)
如果有人可以对我在这里做错的事情提供任何见解。这似乎不是范围问题。更像是设置问题,或者可能是我手动引导应用程序的方式?
似乎您没有将$modal
服务作为依赖项注入。
如何“注入服务”?
考虑function
您正在尝试使用该服务…您应该这样声明:
['$modal', function($modal) {
// $modal has been injected here, you can use it
}]
我已经研究了您Plunk …它使简单的事情变得过于复杂,并且揭示了一些有关AngularJS概念(控制器,范围等)的误解。
另外,它使用的是Bootstrap的3 CSS-当前与AngularJS Bootstrap不兼容。我将CSS链接更改为Bootstrap 2。
看看它如何变得更加简单和有效:http :
//plnkr.co/edit/YFuAA5B65NZggd6fxjCh?p=preview
我建议您从头到尾仔细研究本文档:http :
//docs.angularjs.org/guide/concepts
该视频也非常好,但是没有提供对概念的更深入了解:http :
//weblogs.asp.net/dwahlin/archive/2013/04/12/video-tutorial-angularjs-
fundamentals-in-60 -ish-
minutes.aspx
基本上,错误消息告诉您正在尝试将服务注入到某种内容中(在您的情况下为“ ModalController”)-但是找不到此服务。
“我是怎么注射的?”
-您可能会问。答案是:在Controller函数中需要的每个参数都是要“注入”的“依赖项”-AngularJS“注入器”服务执行此任务。这就是“ $
scope”参数如何神奇地接收“ scope”的原因-注入器在幕后工作。
在您的ModalController中,注入器试图同时满足“ $ modalInstance”和“ items”依赖性(删除“ $
modalInstance”参数-错误消息将更改为“找不到itemsProvider”)…
如果要通过注入器的“神奇”工作接收到这样的依赖关系,则需要使用这些名称来创建/声明服务…(或在尝试时正确使用“ resolve”属性)。 。
…但是在这种情况下根本不需要。您只想访问“项目”,然后返回一个选定的项目。您还试图通过编程方式关闭/关闭模态。
您可以通过“ resolve”属性来解决依赖关系,但是为什么要这么简单才能实现那么复杂呢?只需使用“ scope”属性,并为模态提供范围-
它就可以访问其属性。模态还会自动将“ $ close”和“ $ dismiss”函数添加到作用域,因此您可以轻松使用这些函数。
您试图通过将属性作为服务注入到模式控制器中来将属性从主作用域传递到模式作用域!:-)您试图将自己的模态实例注入其控制器中!!!
因此,您的主要问题与$injector
-值得研究该 注入 物的全部内容-在上面链接的文档中有很好的解释。
“注入服务”并不像“将变量传递给函数”那样简单。您几乎可以通过“ resolve”属性到达那里,但是正如我所说的-对于这种简单情况,确实不需要。
我创建了另一个Plunker而不使用“ scope”,并保留了“ resolve” …无法像对“ items”一样注入“ modalInstance”:
'$modalInstance': function() { return modalInstance; }
…因为目前仍在undefined
…我们可以通过仅调用$scope.$close
ModalController(而不是注入模态)来解决…
…或者像我一样,通过一个函数注入它…非常疯狂,但它的工作原理是:
http://plnkr.co/edit/9AhH6YFBUmhYoUDhvnhQ?p=preview
…我永远不会这样…只是为了学习!
最后但并非最不重要的一点:通过添加ng-controller
模板文件,您需要两次ModalController
…您已经在模态配置中声明了它。但是,通过模式配置,您可以通过解析器进行依赖项注入-而通过模板,则无需应用“解析”。
正如Mahery的评论中指出的那样,$modalInstance
AngularUI的Bootstrap实现使控制器中的注入成为可用。因此,我们无需费劲“解决”或以某种方式使它可用。
这是更新的Plunker:http
://plnkr.co/edit/BMfaFAWibHphDlZAkZex?p=preview
确实,发生错误的主要原因是模板中的“ ng-controller”属性。通过这种方式创建的控制器不会收到“ AngularUI处理”。仅在模态
选项中 指定的控制器会在提供的位置获得“处理” $modalInstance
…
问题内容: 我正在尝试“定制” mongolab示例以适合我自己的REST API。现在我遇到了这个错误,我不确定自己在做什么错: 这是我的控制器: 这是模块: 问题答案: 您的代码看起来不错,实际上,当将其复制并粘贴到示例jsFiddle中时,它可以正常工作(除了调用本身): http //jsfiddle.net/VGaWD/ 很难说发生了什么而没有看到更完整的示例,但是我希望上面的jsFid
问题内容: 这有点奇怪。当我在线搜索此问题时,我看到许多页面的Google搜索结果和SO解决方案…但是似乎没有任何效果! 简而言之,我正在尝试实现AngularUI Bootstrap Modal。我不断收到以下错误: 错误:[$ injector:unpr]未知提供程序:$ uibModalInstanceProvider <-$ uibModalInstance <-addEntryCtrl
问题内容: 我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试使我的应用程序启动并运行。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容: 在app.js中,我具有以下内容: 当我运行此应用程序时,出现以下错误: 我已经阅读了其他一些回答,例如1)注入’ngrou
问题内容: 我将其他html文件作为模板包含在index.html中。为此,我正在使用ng-view指令。但是我遇到一个错误: 我使用的代码是: 这是控制器: 配置: 这是HTML: 我在哪里想念? 问题答案: 做完了 在大多数情况下,这将是angular-route的冲突,而angularjs存在冲突。之后,由于持续不断的循环请求,导致页面崩溃 每次看到“ /”,它都会重新重定向到同一页面,从而
问题内容: 我试图通过遵循工厂方法文档中的示例来构建自己的服务。我认为我做错了,因为我继续遇到未知的提供程序错误。这是我的应用程序代码,包括声明,配置和工厂定义。 编辑我现在添加了所有文件以帮助解决问题 编辑该错误的完整详细信息在下面,问题似乎与getSettings有关,因为它正在寻找getSettingsProvider,但找不到它 这些是我目前在我的应用程序中拥有的所有文件 app.js 这
问题内容: 我试图通过服务公开使用Angular的$ uibModal的“通用”模式。这是该服务的定义: 上面没有什么太复杂的。但是,它不起作用。如果我从对象中删除该属性,则该服务有效;但是,如果包含该属性,则会收到源自该属性的未知提供程序错误。 该属性的文档为: (类型:对象)-将被解析并作为本地成员传递给控制器的成员;它等效于路由器中的resolve属性。 目的是能够为在其DOM中利用这些