Для этого можно использовать шаблон публикации подписки. Таким образом, вы избегаете поместить переменную на корнеплод.
function Ctrl($scope) {
$scope.onDate = "12/01/2015";
$scope.$watch('onDate', function(newValue, oldValue) {
$scope.$emit('onDateChanged', newValue);
});
}
function Ctrl2($scope, $rootScope) {
$scope.onDate = "";
$rootScope.$on('onDateChanged', function(event, value) {
$scope.onDate = value;
});
}
Ваш контроллер будет вызван при загрузке шаблона.
<span ng-controller="Ctrl">
<input type="text" ng-model="onDate">
</span>
<pre>user.name = <span ng-controller="Ctrl2" ng-bind="onDate"></span></pre>
Теперь, как это работает:
Угловые не разделяет области. Каждый контроллер имеет свою собственную раздельную область. Итак, чтобы обновить наши детские области, нам нужно как-то бросить событие, на которое наши дети будут подписаны. Это можно сделать двумя способами.
$scope.$emit
или $rootScope.$broadcast
Разница между этими двумя тонкими.
$ scope. $ Emit wil отправить событие вверх по цепочке. поэтому, например, рассмотрим эту иерархию областей.
rootscope
scope1 ---> subscribes to the emit $scope.$on
scope2 ---> performs a $scope.$emit
scope3 ---> subscribes to the emit $scope.$on
только scope1 поймает событие. так как $ scope. $ emit поднимается вверх по цепочке. Это способ обновления только определенных областей. хотя в основном это делается.
rootscope
scope1 ---> subscribes to the emit $rootScope.$on
scope2 ---> performs a $scope.$emit
scope3 ---> subscribes to the emit $rootScope.$on
мы вводим $ rootScope в контроллере обл1 и scope3 и подписаться на Emit на rootscope. Поскольку корнеплод является наивысшим масштабом, он всегда будет ловить $ emit из области2. Это способ отправить событие только конкретным контроллерам, которые подписываются на корнеплодах.
, наконец, мы можем также сделать это:
rootscope
scope1 ---> subscribes to the emit $scope.$on
scope2 ---> performs a $rootScope.$broadcast
scope3 ---> subscribes to the emit $scope.$on
теперь мы кричали на rootscope и вместо того, чтобы двигаться вверх, как излучать, широковещательный работает вниз по цепочке. Это эквивалент крика в комнате, и все, у кого нет защитников уха, услышат его. в сущности, каждый, кто подписывается на свою локальную область, на событие, которое транслирует, отправляет
использовать переменную $ rootscope – Sajeetharan
@Sajeetharan - Можете ли вы показать код образца – Hacker