Вы можете либо использовать require
свойство директивы, чтобы получить $scope
контроллера другой директивы, или использовать родительский контроллер директив для передачи в общей стоимости. Вот пример использования require
(live demo).
<div ng-app="myApp">
<foo></foo>
<bar></bar>
</div>
angular.module('myApp', [])
.directive('foo', function() {
return {
controller: function($scope) {
$scope.foo = 123;
}
};
})
.directive('bar', function() {
return {
require: '^foo',
controller: function($scope) {
console.log($scope.foo);
}
};
})
;
Время для следующего примера не может быть то, что вы хотите. Они используют одну и ту же переменную, но изменения в $scope
в контроллере первой директивы не будут применяться до тех пор, пока контроллер второй директивы уже не запустится. (live demo).
<div ng-app="myApp" ng-controller="MyCtrl">
{{sharedValue}}
<foo shared-value="sharedValue"></foo>
<bar shared-value="sharedValue"></bar>
</div>
angular.module('myApp', [])
.controller('MyCtrl', function($scope) {
$scope.sharedValue = 'abc';
})
.directive('foo', function() {
return {
scope: {
sharedValue: "="
},
controller: function($scope) {
console.log($scope.sharedValue); // abc
$scope.sharedValue = 123;
}
};
})
.directive('bar', function() {
return {
scope: {
sharedValue: '='
},
controller: function($scope) {
console.log($scope.sharedValue); // still abc, will update later
}
};
})
;
Вы не отметили мой ответ, как принято. Есть ли что-то недостаточное, что я должен вам разъяснить? – m59