将变量从指令传递给控制器

时间:2017-02-14 07:51:28

标签: angularjs

如何将指令的值传递给控制器​​或将指令中的变量传递给控制器​​。谢谢。

这是我的代码。它具有$ observe函数

下的变量
.directive("groupId", function () {
     return {
    replace: true,
    link: function(scope, element, attrs) {
      attrs.$observe('groupId', function(value) {  
        myVal = value;
      });
    }
  };
})

1 个答案:

答案 0 :(得分:1)

<!DOCTYPE html>
<html ng-app="plunker">

<head>
  <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script>
</head>

<body ng-controller="MainCtrl">
  <table>
    <!--* groupIdValue value is passing from controller to directive
     * and my-val is returned back from directive to controller
     * that value is available to controller from ControllerVar variable *-->
    <tr group-id="{{groupIdValue}}" my-val="ControllerVar"></tr>
  </table>
  controller variable: {{ControllerVar}}
</body>
<script>
  var app = angular.module('plunker', []);

  app.controller('MainCtrl', function($scope) {
    $scope.groupIdValue = '123345';
  }).directive("groupId", function() {
    return {
      replace: true,
      restrict: 'A',
      scope: {
        myVal: "=myVal"
      },
      link: function(scope, element, attrs) {
        attrs.$observe('groupId', function(value) {
          scope.myVal = value;
        });
      }
    };
  })
</script>

</html>

您可以在控件中将ControllerVar用作$scope.ControllerVar