【发布时间】:2018-01-04 13:21:15
【问题描述】:
我想编写一个使用 Material 的 $mdDialog 服务的小应用程序。但是当我尝试打开对话框时遇到了注入错误。
对话框以ng-click 方法打开,显示一个自定义HTML 文件,该HTML 文件使用它自己的控制器,我向该控制器注入一个自定义对象worklogData,我通过locals 传递它。
这是错误:
Error: [$injector:unpr] http://errors.angularjs.org/1.5.6/$injector/unpr?
p0=worklogDataProvider%20%3C-%20worklogData%20%3C-%20WorklogEditController
这是相关的控制器,它使用 html。
'use strict';
angular.module('WorklogEdit')
.controller('WorklogEditController', ['$scope', '$rootScope', '$mdDialog', 'WorklogService', 'worklogData',
function ($scope, $rootScope, $mdDialog, WorklogService, worklogData) {
这里是对话框的 Angular js 代码:
$mdDialog.show({
locals: { worklogData: worklog },
templateUrl: 'modules/worklog/worklog.edit.html',
clickOutsideToClose: true,
controller: 'WorklogEditController',
parent: angular.element(document.body),
targetEvent: ev
}).then(function() {
}, function() {
});
错误是试图指向注入的对象,它携带必要的数据,但我不知道这个错误什么时候出现,因为在开发开始时这个对话框可以正常工作。 :(
【问题讨论】:
-
好吧,
worklogData服务在哪里定义...? -
worklogData 不是一个服务,它只是一个携带信息的简单对象。
-
那么it是在哪里定义的呢?
-
据我所知,对话框相关代码运行时创建的worklogData,封装在其中的数据,作为参数传入。 screencast.com/t/uAonVov4q
-
我现在明白了,我已经把问题说得更清楚了。据我所知,这应该确实有效。一个更完整的例子,如果可能的话,我们可以实际运行的 minimal 完整样本,可能会解决这个问题......
标签: javascript angularjs dependency-injection angularjs-material