代码之家  ›  专栏  ›  技术社区  ›  laggingreflex

为动态更改的对象创建工厂/服务,并将其传递给控制器

  •  0
  • laggingreflex  · 技术社区  · 11 年前

    我有一个通过socket.io更新的对象。

    var my_dynobj;
    socket.on('update dynobj', function(dynobj){
        my_dynobj = dynobj;
    });
    

    我想把它作为工厂或服务放在我的angular应用程序中,作为依赖项注入。

    在那里我会想 my_object $scope 以便将其插入HTML {{my_object}} 并且将在其自身通过套接字在其自身工厂定义中更新时进行更新。 socket.on('update object', … 但我想不出一个办法来实现这一点。

    angular.module('app', [])
        .factory('dynobj_factory', [
        function(){
            var my_dynobj;
            socket.on('update dynobj', function(dynobj){
                my_dynobj = dynobj;
            });
    
            return {what?}
    
        }])
        .controller('ctrl', ['$scope', 'dynobj_factory',
        function($scope, dynobj) {
    
            $scope.my_dynobj = dynobj.what?
    
        }])
    
    <div>{{my_dynobj}}</div>
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Ashesh    11 年前

    对于

    return {/* what ? */}
    

    您需要返回以下内容:;

    return {dynamicObj: my_dynobj}
    

    这就行了。对的任何更改 my_dynobj 将通过注入的所有指令、控制器和工厂进行反映。