Да, используйте свойство на $scope
, которое используется совместно с родительской областью. Я использую контроллер здесь в качестве родительской области:
module.controller('foo', function($scope) {
$scope.bar = {};
});
module.directive('textboxComponent', function() {
return {
...
scope: {
sharedObj: '='
},
link: function($scope) {
$scope.doSomething = function() {
$scope.sharedObj.test = 'hello world!'.
}
}
};
});
// same definition using `scope` for gridComponent
И теперь вы установили, что области видимости объекта:
<div ng-controller="foo">
<div textbox-component shared-obj="bar">
let us assume what follows inside is the template of this component
<a ng-click="doSomething()">click me</a>
</div>
<div grid-component shared-obj="bar">
let us assume what follows inside is the template of this component
{{sharedObj.test}}
</div>
</div>
В функции связи с gridComponent
вы также можете сделать это, если вам нужно знать, когда sharedObj
изменяется от внешнего (другой директивы):
$scope.$watch('sharedObj', function() {
console.log($scope.sharedObj.test);
}, true);
Вы также можете использовать $broadcast
но это просто неправильно в этом продолжение ext ...