Javascript 从指令内容访问隔离范围?

Javascript 从指令内容访问隔离范围?,javascript,angularjs,Javascript,Angularjs,有没有办法从指令的DOM子级访问隔离范围?我有以下定义: var $app = angular.module('MyApp',[]); $app.directive('crnDatasource',[function() { return { restrict: 'A', controller: 'CrnFormController', scope: { crnDatasource : '@'

有没有办法从指令的DOM子级访问隔离范围?我有以下定义:

    var $app = angular.module('MyApp',[]);
    $app.directive('crnDatasource',[function() {
      return {
        restrict: 'A',
        controller: 'CrnFormController',
        scope: {
            crnDatasource : '@'
        }
      };
    }])

    .controller("CrnFormController",['$scope', function($scope) {
        $scope.newValue = $scope.crnDatasource + 'anything';
        $scope.itDoesntWork = function() {
          alert($scope.crnDatasource);
        }

    }]);
但我必须以这种方式访问范围

 <form crn-datasource="People">
      {{newValue}}
      <button ng-click="itDoesntWork()"></button>
 </form>

{{newValue}}

应该如何访问diretive内容中的作用域?

由于您将指令放在具有内部内容的节点上,因此您需要将其转置或不使用隔离作用域。第二个更简单:

$app.directive('crnDatasource', [function() {
    return {
        restrict: 'A',
        controller: 'CrnFormController',
        link: function(scope, element, attrs) {
            console.log('1');
            scope.crnDatasource = attrs.crnDatasource;
            scope.newValue = scope.crnDatasource + 'anything';
        }
    };
}]);

演示:

使用
链接
函数,而不是指令定义中的
控制器
。因此我要说的是:“或不使用隔离作用域”,除非确实需要。