我正在创建一个指令,该指令根据相关字段的属性生成一些标记。我打算像这样使用它:
<mvc-error-list field="myForm.testField"></mvc-error-list>
在指令中我想查找myForm.testField对象的属性。但是我不清楚如何根据传递给模板函数的字符串值来检索myForm.testField对象。
答案 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函数”。