javascript - Angular JS - 使用带有嵌套自定义指令的 ControllerAs

标签 javascript angularjs angularjs-directive angularjs-scope

正如标题所示,我在使用嵌套自定义指令的 Angular 项目上遇到了一些问题。我正在创建一个界面,允许用户通过单击复选框来过滤搜索结果的 JSON 提要。 指令模板层次结构如下:

<filtergroup>
    <filter></filter>
</filtergroup>

我似乎能够访问过滤器组模板中过滤器组指令的 Controller 中定义的变量。但是,尽管使用了

,但我无法从子指令中访问相同的变量
require: '^filtergroup'

以下是我的指令:

.directive('filtergroup', [function(){
return{
    restrict: 'E',
    transclude: true,
    scope: { },
    template: '<div><ng-transclude></ng-transclude>{{filtergroup.variable}}</div>',
    bindToController: true,
    controllerAs: 'filtergroup',
    replace: true,
    controller: function() {
        var self = this;
           self.variable = "blah";
    }
};}])

.directive('filter', [function(){
return {
    restrict: 'E',
    template: '<div>{{filtergroup.variable}}</div>',
    require: '^filtergroup',
      scope: {},
    link: function(scope, elem, attr, filtergroupCtrl){
        scope.active = false;
    }
};}]);

我还在以下位置创建了该问题的简化 Codepen:

http://codepen.io/decodedcreative/pen/NrNqXm

任何帮助都会很棒,因为这让我发疯!谢谢

最佳答案

通过说 require: '^filtergroup' 您只是要求将 filtergroup 的 Controller 注入(inject)链接函数。然后就看你如何使用它了。

就您而言,您可以添加对 filter 范围的 filtergroupCtrl 引用:

.directive('filter', [function(){
    return {
        // ...
        template: '<div>{{filtergroup.variable}}</div>',
        link: function(scope, elem, attr, filtergroupCtrl){
            scope.filtergroup = filtergroupCtrl;
            // ...
        }
    };
}]);

这样您就可以按照您尝试的方式在子模板中访问它:

<div>{{filtergroup.variable}}</div>

关于javascript - Angular JS - 使用带有嵌套自定义指令的 ControllerAs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773345/

相关文章:

javascript - 你如何在angularjs中旋转图像

angularjs - 多个指令 [指令#1,指令#2] 要求隔离范围

javascript - 尝试代理到 : localhost:4200/api/v1/generate_uid 时发生错误

AngularJS - 动态更改过滤器上的货币符号?

javascript - 通过 JavaScript 直接访问 MongoDB

javascript - 如何更改自己定义的属性

javascript - Angular UI-Router $urlRouterProvider.when 处理程序结果被 $state 忽略

javascript - Angular Directive(指令)范围值

javascript - Chart.js 数据集 Controller 'null' 绘制图表时

javascript - Angularjs 中始终为真的测试失败——Karma