Мое приложение инициализирует граф объекта в $rootScope, например...
var myApp = angular.module('myApp', []);
myApp.run(function ($rootScope) {
    $rootScope.myObject = { value: 1 };
});
... и затем потребляет данные из этого графа объектов (только для одностороннего связывания), например...
<p>The value is: {{myObject.value}}</p>
Это прекрасно работает, но если я впоследствии (после завершения страницы) попытаюсь обновить $rootScope и заменить оригинальный объект на новый, он будет проигнорирован. Первоначально предполагалось, что это связано с тем, что AngularJS сохраняет ссылку на исходный объект, даже если я его заменил.
Однако, если я переношу потребляющий HTML-код в контроллер, я могу повторно обновлять его область видимым образом и изменения будут правильно отражены на странице.
myApp.controller('MyController', function ($scope, $timeout) {
    $scope.myObject = { value: 3 };
    $timeout(function() {
        $scope.myObject = { value: 4 };
        $timeout(function () {
            $scope.myObject = { value: 5 };
        }, 1000);
    }, 1000);
});
Есть ли способ сделать это через $rootScope, или это можно сделать только внутри контроллера? Кроме того, существует ли более рекомендуемая модель для реализации таких операций? В частности, мне нужен способ заменить полные графические объекты, которые потребляются AngularJS вне кода AngularJS.
Спасибо, заранее, за ваши предложения, Тим
Изменить: как было предложено в комментариях, я попытался выполнить изменение внутри $apply, но это не помогает:
setTimeout(function() {
    var injector = angular.injector(["ng", "myApp"]);
    var rootScope = injector.get("$rootScope");
    rootScope.$apply(function () {
        rootScope.myObject = { value: 6 };
    });
    console.log("rootScope updated");
}, 5000);
