Angularjs 如何从指令访问控制器作用域

Angularjs 如何从指令访问控制器作用域,angularjs,Angularjs,我正在学习英语。所以坚持从指令访问控制器范围。 $scope.vojta已填充到控制器中,我喜欢从指令中打印它 <div ng-controller="Controller"> <my-customer ></my-customer> </div> angular.module('docsIsolationExample', []) .controller('Controller', ['$scope', function($scope) {

我正在学习英语。所以坚持从指令访问控制器范围。 $scope.vojta已填充到控制器中,我喜欢从指令中打印它

<div ng-controller="Controller">
  <my-customer ></my-customer>
</div>

angular.module('docsIsolationExample', [])
.controller('Controller', ['$scope', function($scope) {
  //$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
  $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
}])
.directive('myCustomer', function() {
  return {
    restrict: 'E',
    /*
    scope: {
      customerInfo: '=info'
    },
    */
    template: 'Name: {{vojta.name}} Address: {{vojta.address}}'

  };
});
<my-customer info="vojta"></my-customer>

angular.module('docsIsolationExample',[])
.controller('controller',['$scope',function($scope){
//$scope.naomi={名称:'naomi',地址:'1600圆形剧场'};
$scope.vojta={名称:'vojta',地址:'3456其他地方'};
}])
.directive('myCustomer',function(){
返回{
限制:'E',
/*
范围:{
customerInfo:'=信息'
},
*/
模板:“名称:{{vojta.Name}}地址:{{vojta.Address}”
};
});

没有打印姓名或地址。无法理解我在哪里犯了错误。寻找一些建议。这里是fiddle

因为在指令的独立范围内有
customerInfo:'=info'
,所以应该传递
info
属性(用作属性别名)中的值,以便它可以与指令内的
customerInfo
范围变量一起使用

<div ng-controller="Controller">
  <my-customer ></my-customer>
</div>

angular.module('docsIsolationExample', [])
.controller('Controller', ['$scope', function($scope) {
  //$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
  $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
}])
.directive('myCustomer', function() {
  return {
    restrict: 'E',
    /*
    scope: {
      customerInfo: '=info'
    },
    */
    template: 'Name: {{vojta.name}} Address: {{vojta.address}}'

  };
});
<my-customer info="vojta"></my-customer>

我们可以通过以下代码从指令访问控制器作用域,而无需使用隔离作用域

<div ng-app="docsIsolationExample" ng-controller="Controller">
  <my-customer></my-customer>
</div>

angular.module('docsIsolationExample', [])
.controller('Controller', ['$scope', function($scope) {
  //$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
  $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
}])
.directive('myCustomer', function() {
  return {
    restrict: 'E',
    /*
    scope: {
      customerInfo: '=info'
    },*/

    template: 'Name: {{vojta.name}} Address: {{vojta.address}}'

  };
});

angular.module('docsIsolationExample',[])
.controller('controller',['$scope',function($scope){
//$scope.naomi={名称:'naomi',地址:'1600圆形剧场'};
$scope.vojta={名称:'vojta',地址:'3456其他地方'};
}])
.directive('myCustomer',function(){
返回{
限制:'E',
/*
范围:{
customerInfo:'=信息'
},*/
模板:“名称:{{vojta.Name}}地址:{{vojta.Address}”
};
});

我试过了,但没用。没有打印任何内容。我从客户处删除info=“vojta”并在指令内对隔离范围进行注释,它就可以工作了。我将把它标记为答案。thanks@Mou不,如果您想创建一个可重用指令,那么这不是正确的方法。。你看过我最新的答案了吗?我是新来的。我喜欢看到一些示例代码,它们向我展示了控制器和指令之间可以通过多少种方式进行通信。假设您喜欢从指令访问控制器函数,或者从指令访问控制器函数。@Mou在这里看到,您期望在一个答案中有太多的东西。。我可以提供你的链接,这将涵盖你想要的。。请务必查看指令中对隔离范围有很好解释的部分。还有一件事是最新的,你也可以参考它们。打开你的浏览器控制台。小提琴中的代码有语法错误。它不是有效的JavaScript。您忘了在模板中添加
ng app=“docsIsolationExample”