【问题标题】:Accessing directive from a different module从不同的模块访问指令
【发布时间】:2016-04-08 13:10:21
【问题描述】:

我有两个不同的模块,第一个包含控制器第二个指令。

基本上我希望directive 在我的view 中呈现。 但由于modules 与directive 和controller 不同,它给出的错误。

如果我给出相同的module,那么它通过我想要一个为所有控制器服务的通用模块来解决我的问题。

controller

angular.module('SlamModuleCtrl')
        .controller('SlambookExt',['$scope','$route','SlambookCollection', function($scope,$route) {
            console.log("slam controller")
        }]);

Directive

angular.module('Genericmodule')
    .directive('appVersion', ['version', function (version) {
       return {
    restrict: 'E',  
    template: '<h1>version1</h1>'
    } 
    }])

View

 <div ng-controller="SlambookExt">
     <app-version>1</app-version>
    </div>

【问题讨论】:

  • 将指令注入控制器是什么意思?为什么不将该控制器放在您的指令中..
  • @PankajParkar 基本上我想访问不同模块的指令,因此必须以某种方式将该指令注入控制器的模块中。而且我不能将控制器放入指令中,因为控制器包含更多的逻辑,将其放入指令将限制其范围。
  • 您需要clear your basic first,因为您要求将指令放入控制器中是错误的..
  • @PankajParkar 如何将指令与视图集成?重新回答这个问题告诉我如何访问不同模块中的指令?
  • 只需在 html 上添加指令元素,只需先阅读提供的链接,其中包含您需要的所有内容。

标签: angularjs dependency-injection angular-directive angular-controller


【解决方案1】:

在实例化slamModuleCtrl时,需要指定genericModule作为依赖。

或者使用将这两个模块作为依赖项加载的父模块,并将该父模块用作您的ng-app。

angular.module('parentModule',['slamModuleCtrl','genericModue'])

这只是一个合理的解决方案,因为您的两个模块在我看来都是正确的。所以我猜测版本没有显示是因为模块还没有加载

【讨论】:

    【解决方案2】:

    Chanthu 是正确的,您需要指定一个依赖于您的其他模块的父模块,但您还需要为您的其他模块传递一系列依赖项,在这种情况下它们没有任何依赖项。

    声明你的模块并将它们添加到父模块中......

    var controllerModule = angular.module('controllerModule', []);
    
    var directiveModule = angular.module('directiveModule', []);
    
    
    controllerModule.controller('mainController', function($scope) {
      $scope.hello = 'Hello';
    })
    
    
    directiveModule.directive('myDirective', function() {
      return {
        template: '{{hello}}'
      };
    });
    
    angular.module('app', ['controllerModule', 'directiveModule']);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
    
    <body ng-app="app" ng-controller="mainController">
    
      <my-directive></my-directive>
    
    </body>

    code sn-p 显示另一个模块指令并使用来自另一个模块控制器的绑定

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 2017-10-11
      相关资源
      最近更新 更多