将作用域对象传递给可以监视和更新它的服务

pass scope object to service which can watch and update it

本文关键字:监视 更新 服务 对象 作用域      更新时间:2023-09-26

我写了一些代码,它监视一个范围变量并更新它,这一切都很好。我现在正试图将其封装在一个服务中,所以我需要将一个对象传递给我的服务,然后让服务监视它并更新它。

我认为问题是,当传递对象时,它是通过引用传递的,但不能更新,只有成员可以(如果我正确理解了引用传递的话)。

我的代码的简化版本如下:

angular.module('my.services').factory('myUtils', function ($log, $timeout, $rootScope, $state, $stateParams) {
    'use strict';
    var myUtils = {};

    myUtils.syncUrlToObject = function(myObject, callback){
        $rootScope.$watch(function(){
            return myObject;
        }, function(newValue, oldValue){

            // Update tmyObject
            myObject = {foo: 'bar'}
            // Run the callback
            callback();
        }, true);
    }

    return myUtils;
});

观察者必须在控制器或指令中,但不能在服务中。