AngularJS:访问元素标记内的隔离范围变量

时间:2015-12-01 07:56:44

标签: angularjs angularjs-directive angularjs-scope

这有可能吗?

app.directive('myDirective',function(){
  return {
    restrict: 'A',
    scope: {
      myName:'=myName'
    }
  }
}

。 。

<div my-directive my-name="name" ng-class="myName"></div>

还是我需要编写自己的指令?

3 个答案:

答案 0 :(得分:0)

  

这有可能吗?

是的,有可能(例如,使用$parent引用外部作用域),但这样做是没有意义的。您不希望指令混淆其沙箱之外的东西(隔离范围)。毕竟,这是首先确定孤立范围的重点。

在您的情况下,您只需要将ngClass与原始name一起使用,该<div my-directive my-name="name" ng-class="name"></div> 已在范围(外部)中提供:

OrderSummary

答案 1 :(得分:0)

HTML:

<div ng-controller="MyCtrl">
    <my-directive my-name="name" />
</div>

JS:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.name = 'World';
}

myApp.directive('myDirective',function(){
  return {
    restrict: 'E',
    scope: {
      myName:'=myName'
    },
    replace: false,
    template: 'Hello, {{myName}}!',
    controller: function(){}
  }
});

小提琴:http://jsfiddle.net/HB7LU/20538/

使用HTML代码更改模板。

答案 2 :(得分:0)

如果您想操纵控制器中的类,请使用:

HTML

<div ng-class="{{myName}}" >

JS

$scope.myName = 'value';