javascript - AngularJS自定义指令在继承父范围的同时访问模板中的属性

标签 javascript angularjs angularjs-directive angularjs-scope

我有一个自定义指令,我想继承父范围。我还想通过属性传递一个值。它看起来像这样:

Controller

app.controller('Main', ['$scope', function($scope){
   $scope.cols = { 'col1': true, 'col2':false, 'col3': true};

   $scope.toggleCol = function(colName){
       $scope.cols[colName] = !$scope.cols[colName];
   };
}]);

指令

wrApp.directive("custTh", function(){
 return {
    restrict: "EA",
    scope: false,
    replace: true,
    template: '<th ng-show="cols[{{ colname }}]" ng-click="toggleCol({{ colname }})">{{ colname }}</th>',

 };
});

HTML

<th cust-th colname="col2"></th>

我似乎无法访问属性值,因为我正在继承父范围。是否可以直接从模板访问指令属性?

最佳答案

您可以继承作用域,也可以使用以下方法创建子作用域:

scope: true

然后为了传递值:

link: function(scope, element, attrs) {
     scope.$watch(attrs.valueFromOutside, function(newValue) {
         scope.valueFromOutside = newValue;
     });
 }

这样,在指令的内部作用域中,您可以拥有不同的值,同时仍然可以访问父作用域。

您可以在这里看到这一切的实际情况: http://jsfiddle.net/HB7LU/15120/

关于javascript - AngularJS自定义指令在继承父范围的同时访问模板中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28375047/

相关文章:

javascript - tickinterval 不适用于 x 轴的 Highcharts

javascript - Angular 2 在 [ngStyle] 中设置背景图像和颜色

javascript - AngularJS:如何仅过滤具有特定 3 个字符值的项目?

javascript - Angular UI 日历渲染问题

angularjs - 在 ng-view 上滚动时无限滚动在 AngularJS 中不起作用

javascript - <div> 内容未在 &lt;iframe&gt; 中加载

javascript - HTML 和 JavaScript 性能

javascript - AngularJS - 语法错误 : Unexpected token ':' error in Safari Browser

javascript - 当前 DOM 元素上不存在所需的指令 Controller

angularjs - 如何从单独的指令可靠地访问动态分配的属性值?