Как получить доступ / обновить $ rootScope извне Angular

Мое приложение инициализирует граф объектов в $ rootScope, как это ...

var myApp = angular.module('myApp', []);

myApp.run(function ($rootScope) {
    $rootScope.myObject = { value: 1 };
});

... и затем использует данные из этого графа объекта (только одностороннее связывание), как это ...

<p>The value is: {{myObject.value}}</p>

Это работает нормально, но если я впоследствии (после завершения рендеринга страницы) попытаюсь обновить $ rootScope и заменить исходный объект новым, он игнорируется. Сначала я предполагал, что это потому, что AngularJS сохраняет ссылку на исходный объект, даже если я его заменил.

Тем не менее, если я заключаю в HTML потребляющий 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);

Ответы на вопрос(3)

Ваш ответ на вопрос