Если вы хотите разделить объект между вашим контроллером и вашей директивой, вы можете использовать область ограничений изоляции и двухстороннюю привязку свойства к области своей директивы к одному в области вашего контроллера.
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>
В качестве альтернативы, если вам не нужно, чтобы передать что-нибудь обратно к контроллеру вы можете использовать одну сторону переплета. Который работает одинаково, но вы используете символ &
вместо =
при определении области выделения. Вам также нужно получить доступ к свойству как функции, так как односторонняя привязка данных создает «функцию геттера» в области вашей директивы.
Создайте plunkr с проблемой – sirrocco