javascript - 将指令属性传递给链接 Controller ?

标签 javascript angularjs angularjs-directive

我有一个指令用于跨多个页面执行相同的搜索过滤。因此,该指令将使用服务并使用大量代码。因此,我想链接到一个 Controller ,而不是像这样在指令中放置 Controller :

.directive('searchDirective', function($rootScope) {
    return { 
        restrict: 'E',
        templateUrl:'searchtemplate.html',
        controller: 'searchCtrl',
        controllerAs: 'search'
    };
});

我还想访问模板内的父范围数据,所以我不想使用隔离范围。

无论如何,我不确定该怎么做。我的指令如下所示:

<search-directive filter="foo"/>

如何在过滤器属性中传递值,以便我可以在我的 Controller 中使用 $scope.filter 或 this.filter 访问它?

如果我使用的是隔离范围,那就很简单了。如果我在同一页面中有 Controller ,我可以使用 $attrs。但是由于我使用的是来自另一个地方的 Controller 并且不想要一个隔离的范围,所以我不确定如何将 attrs 值获取到 Controller 中。

有什么建议吗?

最佳答案

使用链接函数并将值传递给范围怎么样?

return { 
        restrict: 'E',
        templateUrl:'searchtemplate.html',
        controller: 'searchCtrl',
        controllerAs: 'search',
        link: function (scope, element, attr) {
           scope.filter = attr.filter;
      }
    };

关于javascript - 将指令属性传递给链接 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314962/

相关文章:

javascript - 替换 JSON 中的属性值

javascript - 如何在不传递用户名和传递url参数的情况下获取 token ?

javascript - 使用 Angular require 输入来启用注册 : require input's/validation

javascript - 您需要在 $scope $destroy 事件中取消绑定(bind) $scope.$on 吗?

javascript - AngularJS ng-repeat 设置属性

angularjs - 为 jQuery UI 按钮创建 AngularJS 指令

javascript - 从元素中获取单个类名作为字符串

javascript - 表单提交刷新页面,不提交

AngularJS 手动渲染 Controller 和模板

javascript - 为什么我的指令不能从其父作用域继承函数?