javascript - AngularJS:如何继承指令所在的范围,并同时获取属性值

标签 javascript angularjs angularjs-directive angularjs-scope

有人可以帮忙解决这个问题吗?有没有办法访问指令所在的范围(例如 Controller 的范围),同时我仍然可以访问属性的值。

这是我的指令代码

app.controller("someCtr", function( $scope ){
    $scope.controllerScopeVariable = "Lorem";
});
app.directive('myDirective', [function () {
return {
    restrict: 'A',
    scope: {
        directiveAttributeValue: "="
    },
    link: function (scope, element, attrs) {
        var bar = scope['directiveAttributeValue'];
        var foo = scope['controllerScopeVariable']; //I need to access this
    }
   };
}]);

这是 HTML:

    <div ng-controller="someCtr">
        <div myDirective directiveAttributeValue="{{blabla}}">
        </div>
    </div>

在指令中,我无法访问范围['controllerScopeVariable']。我怎样才能做到这一点?

最佳答案

您还必须在指令的 scope 属性中定义变量 controllerScopeVariable

例如:

    app.controller("someCtr", function( $scope ){
    $scope.controllerScopeVariable = "Lorem";
});
app.directive('myDirective', [function () {
return {
    restrict: 'A',
    scope: {
        directiveAttributeValue: "=",
        controllerScopeVariable: "&"
    },
    link: function (scope, element, attrs) {
        var bar = scope['directiveAttributeValue'];
        var foo = scope['controllerScopeVariable'];
    }
   };
}]);

请记住,可以通过三种方法来定义可以传递的本地范围属性:

  • @ 用于将字符串值传递到指令中
  • = 用于创建到传递到指令的对象的双向绑定(bind)
  • & 允许将外部函数传递到指令中并调用

关于javascript - AngularJS:如何继承指令所在的范围,并同时获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26239982/

相关文章:

javascript - 列表框值更改时隐藏 div

javascript - 使用 angular-ui-router 将子状态从子模块传递到 angular.js 中的主模块

html - 在我的案例中如何使用 Bootstrap 显示我的元素

javascript - 使用 Angular js在点击事件中调用routeProvider

javascript - Angular-masonry - 扩展项目

JavaScript If 条件语句不筛选输入值

javascript - Phonegap 下载 html 文件并替换它(来源)

javascript - AngularJS 范围应用在单击时不起作用

javascript - 在路由更改不起作用后取消angularjs超时

javascript - 如何在html中将组件的高度设置为父组件的百分比?