Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 指令的未知提供程序_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 指令的未知提供程序

Angularjs 指令的未知提供程序,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在尝试向我的项目添加指令 以下是指令代码: "use strict"; var kf = angular.module('kingaFrontend'); kf.directive('FlashMessages', function() { return { restrict: 'E', templateUrl: 'directives/flash-message-container.html', controller: 'FlashMessageCtrl'

我正在尝试向我的项目添加指令

以下是指令代码:

"use strict";
var kf = angular.module('kingaFrontend');

kf.directive('FlashMessages', function() {
  return {
    restrict: 'E',
    templateUrl: 'directives/flash-message-container.html',
    controller: 'FlashMessageCtrl'
  };
});
和本指令的控制器:

"use strict";
var kf = angular.module('kingaFrontend');

kf.controller('FlashMessageCtrl', function ($scope, $rootScope, FlashMessages) {
  $scope.FlashMessages = FlashMessages;

  $scope.$watch('FlashMessages.messages', function (newVal, oldVal, scope) {
    if(newVal) {
      scope.messages = newVal;
    }
  });

  $scope.dismissMessage = function(index) {
    FlashMessages.dismiss(index);
  };
});
当我试图在index.js中使用FlashMessages时,我得到了一个错误:
未捕获错误:[$injector:unpr]未知提供程序:FlashMessagesProvider您无法将指令注入到对象中。他们不是AngularJS提供者


在控制器中不能像那样使用“FlashMessage”。我想也许你想要一项服务?

正如@PeterAshwell所指出的,我认为你可能混淆了指令和提供者(如服务、工厂等)

正如您所定义的,
FlashMessages
是一个指令。从AngularJS文档:

指令是DOM元素(如属性、元素)上的标记 名称、注释或CSS类),告诉AngularJS的HTML编译器 ($compile)将指定的行为附加到该DOM元素,甚至 转换DOM元素及其子元素

因此,要使用您定义的
FlashMessages
,应该是:

<flash-messages></flash-messages>
然后这个工厂服务可以注入到你应用程序的任何地方,包括你的指令、控制器和运行块。另外,确保在html中引用
flashMessagesFactory.js

  <script src="app/modules/kinga-api/kinga-api.js"></script>
    <script src="app/modules/kinga-api/user.js"></script>
    <script src="app/modules/kinga-api/project.js"></script>
    <script src="app/modules/kinga-api/http.js"></script>
    <script src="app/index.js"></script>
    <script src="app/main/main.controller.js"></script>
    <script src="app/login/login.controller.js"></script>
    <script src="app/featured/featured.controller.js"></script>
    <script src="app/edit_project/edit.controller.js"></script>
    <script src="app/directives/flash-message.directive.js"></script>
    <script src="app/directives/flash-message.controller.js"></script>
    <script src="components/navbar/navbar.controller.js"></script>
    <script src="app/contact/contact.controller.js"></script>
    <script src="app/config/config.js"></script>
<flash-messages></flash-messages>
kf.factory('flashMessagesFactory', function() {
  return {
    messages: [], // or {}, depending on your code
    dismiss: function(index){ ... },
    dismissAll: function(){ ... }
  }
});