AngularJS指令:从属性中获取对象

时间:2015-05-22 17:08:42

标签: angularjs angularjs-directive

我正在创建一个指令,该指令根据相关字段的属性生成一些标记。我打算像这样使用它:

 <mvc-error-list field="myForm.testField"></mvc-error-list>

在指令中我想查找myForm.testField对象的属性。但是我不清楚如何根据传递给模板函数的字符串值来检索myForm.testField对象。

1 个答案:

答案 0 :(得分:1)

如果要在控制器和指令之间共享对象,可以使用isolate指令范围,并将指令范围内的属性双向绑定到控制器范围内的属性。

angular.module('testApp', [])
.directive('myDirective', function(){
  return {
    restrict: 'E',
    scope: {
      field: '='
    },
    link: function(scope){
      console.log(scope.field.message)
    }
  };
})
.controller('myCtrl', function($scope){
  $scope.ctrlField = { message: 'Hello, World' };
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='testApp' ng-controller='myCtrl'>
  <my-directive field='ctrlField'></my-directive>
</div>

或者,如果您不需要将任何内容传递回控制器,则可以使用单向绑定。其工作方式相同,但在定义隔离范围时使用&符号而不是=。您还需要作为函数访问该属性,因为单向数据绑定在您的指令范围内创建“getter函数”。