从 Angular 中的子指令访问控制器作用域

Accessing Controller Scope from child Directive in Angular

我想在不使用 $parent 的情况下访问控制器范围。从我读到的所有内容来看,我认为我可以按如下方式将它传递到隔离范围:

  <body ng-app="app" ng-controller="myController">
    <h1>
      {{message}}
    </h1>
    <mydir></mydir>

angular.module('app', [])

.controller('myController', function($scope){
  $scope.message = "Hello World";
})

.directive('mydir', function(){
  return {
    restrict: "E",
    scope: {
      message: "=",
    },
    controller: function($scope){
      $scope.goodbye = function(){
        $scope.message = "Goodbye World";
      }
    },
    template: "<button ng-click='goodbye()'>Say Goodbye</button>"
  }
})

但是,我无法获得更新范围 message 属性 的指令。 Plnkr link.

由于独立范围值可以使用 attribute 传递,因此您需要在指令元素上具有 message 属性,该元素将具有范围变量名称。

<mydir message="message"></mydir>

Demo Plunker