【问题标题】:Angular JS Material Dialog local injection errorAngular JS Material Dialog本地注入错误
【发布时间】: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


【解决方案1】:

locals 中的 worklogData 必须用 '' 包围,如下所示:

locals: { 'worklogData': worklog }

希望对你有帮助 =)

【讨论】:

  • locals 不需要这个;就 Javascript 而言,这与原始版本完全相同。
猜你喜欢
  • 1970-01-01
  • 2016-05-30
  • 2017-01-14
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多