AngularJS如何获得实际工厂';控制器中的数据是什么?

AngularJS如何获得实际工厂';控制器中的数据是什么?,angularjs,factory,Angularjs,Factory,当我收到套接字消息时,我有工厂。 如何在控制器中获取返回的工厂实际数据? 请帮忙 app.factory('socket',['$rootScope',function($rootScope){ connection.open(); var连接=新高速公路连接({ 网址:'wss://site.com:6555/', 领域:“领域” }); 变量集合={ “主题1”:[], '主题2':[] }; 函数onevent(args){ log(“事件:,参数[0]); collection.top

当我收到套接字消息时,我有工厂。 如何在控制器中获取返回的工厂实际数据? 请帮忙

app.factory('socket',['$rootScope',function($rootScope){
connection.open();
var连接=新高速公路连接({
网址:'wss://site.com:6555/',
领域:“领域”
});
变量集合={
“主题1”:[],
'主题2':[]
};
函数onevent(args){
log(“事件:,参数[0]);
collection.topic1.push(args[0]);
}
connection.onopen=函数(会话){
订阅(userid,onevent);
}
返回{
收藏:收藏
}

}]);您希望将工厂注入到要使用数据的控制器中。下面是一个将数据从工厂传送到控制器的基本示例

app.factory('sharedData', function() {
 return {
  name: 'Daniel'
 };
});
然后在控制器中,您可以简单地将此数据对象从工厂设置为$scope

app.controller('MainController', function($scope, sharedData) {
 $scope.data = sharedData;
});
因此,在您的情况下,只需制作一个控制器并注入
套接字
工厂,如下所示

app.controller('sockets', function($scope, sockets) {
 $scope.collection = collection;
});

您希望将工厂注入到要使用数据的控制器中。下面是一个将数据从工厂传送到控制器的基本示例

app.factory('sharedData', function() {
 return {
  name: 'Daniel'
 };
});
然后在控制器中,您可以简单地将此数据对象从工厂设置为$scope

app.controller('MainController', function($scope, sharedData) {
 $scope.data = sharedData;
});
因此,在您的情况下,只需制作一个控制器并注入
套接字
工厂,如下所示

app.controller('sockets', function($scope, sockets) {
 $scope.collection = collection;
});

您希望将工厂注入到要使用数据的控制器中。下面是一个将数据从工厂传送到控制器的基本示例

app.factory('sharedData', function() {
 return {
  name: 'Daniel'
 };
});
然后在控制器中,您可以简单地将此数据对象从工厂设置为$scope

app.controller('MainController', function($scope, sharedData) {
 $scope.data = sharedData;
});
因此,在您的情况下,只需制作一个控制器并注入
套接字
工厂,如下所示

app.controller('sockets', function($scope, sockets) {
 $scope.collection = collection;
});

您希望将工厂注入到要使用数据的控制器中。下面是一个将数据从工厂传送到控制器的基本示例

app.factory('sharedData', function() {
 return {
  name: 'Daniel'
 };
});
然后在控制器中,您可以简单地将此数据对象从工厂设置为$scope

app.controller('MainController', function($scope, sharedData) {
 $scope.data = sharedData;
});
因此,在您的情况下,只需制作一个控制器并注入
套接字
工厂,如下所示

app.controller('sockets', function($scope, sockets) {
 $scope.collection = collection;
});

工厂无法将数据推送到控制器,但控制器可以从工厂提取数据。为此,将工厂注入控制器:

app.controller('yourController', ['$scope', 'socket', function($scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    ...
});
如果希望控制器在套接字工厂接收事件并更新集合时自动更新,则始终可以将$rootScope注入工厂并$emit发出控制器可以侦听的事件。比如:

app.factory('socket',['$rootScope', function($rootScope) {

   ...
   function onevent(args) {
      console.log("Event:", args[0]);
      collection.topic1.push(args[0]);
      $rootScope.$emit('SocketCollectionUpdated', collection); // Note that you can name your event whatever you want.
   }
   ...

}]);

app.controller('yourController', ['$rootScope', '$scope', 'socket', function($rootScope, $scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    $rootScope.$on('SocketCollectionUpdated', function (event, data) {
        $scope.yourControllerCollection = data;
    });
    ...
});

工厂无法将数据推送到控制器,但控制器可以从工厂提取数据。为此,将工厂注入控制器:

app.controller('yourController', ['$scope', 'socket', function($scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    ...
});
如果希望控制器在套接字工厂接收事件并更新集合时自动更新,则始终可以将$rootScope注入工厂并$emit发出控制器可以侦听的事件。比如:

app.factory('socket',['$rootScope', function($rootScope) {

   ...
   function onevent(args) {
      console.log("Event:", args[0]);
      collection.topic1.push(args[0]);
      $rootScope.$emit('SocketCollectionUpdated', collection); // Note that you can name your event whatever you want.
   }
   ...

}]);

app.controller('yourController', ['$rootScope', '$scope', 'socket', function($rootScope, $scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    $rootScope.$on('SocketCollectionUpdated', function (event, data) {
        $scope.yourControllerCollection = data;
    });
    ...
});

工厂无法将数据推送到控制器,但控制器可以从工厂提取数据。为此,将工厂注入控制器:

app.controller('yourController', ['$scope', 'socket', function($scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    ...
});
如果希望控制器在套接字工厂接收事件并更新集合时自动更新,则始终可以将$rootScope注入工厂并$emit发出控制器可以侦听的事件。比如:

app.factory('socket',['$rootScope', function($rootScope) {

   ...
   function onevent(args) {
      console.log("Event:", args[0]);
      collection.topic1.push(args[0]);
      $rootScope.$emit('SocketCollectionUpdated', collection); // Note that you can name your event whatever you want.
   }
   ...

}]);

app.controller('yourController', ['$rootScope', '$scope', 'socket', function($rootScope, $scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    $rootScope.$on('SocketCollectionUpdated', function (event, data) {
        $scope.yourControllerCollection = data;
    });
    ...
});

工厂无法将数据推送到控制器,但控制器可以从工厂提取数据。为此,将工厂注入控制器:

app.controller('yourController', ['$scope', 'socket', function($scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    ...
});
如果希望控制器在套接字工厂接收事件并更新集合时自动更新,则始终可以将$rootScope注入工厂并$emit发出控制器可以侦听的事件。比如:

app.factory('socket',['$rootScope', function($rootScope) {

   ...
   function onevent(args) {
      console.log("Event:", args[0]);
      collection.topic1.push(args[0]);
      $rootScope.$emit('SocketCollectionUpdated', collection); // Note that you can name your event whatever you want.
   }
   ...

}]);

app.controller('yourController', ['$rootScope', '$scope', 'socket', function($rootScope, $scope, socket) {
    ...
    $scope.yourControllerCollection = socket.collection;
    $rootScope.$on('SocketCollectionUpdated', function (event, data) {
        $scope.yourControllerCollection = data;
    });
    ...
});

非常感谢。但是,如果在控制器中获取数据后需要,请删除(或重置)socket.collection,我应该怎么做?您可以在我上面的回答中使用第二个选项($emit/$on),使控制器与对集合的更改保持同步。您能为我写一个示例吗:)我上面的解决方案在第二个代码段中有一个示例。谢谢!但是,如果在控制器中获取数据后需要,请删除(或重置)socket.collection,我应该怎么做?您可以在我上面的回答中使用第二个选项($emit/$on),使控制器与对集合的更改保持同步。您能为我写一个示例吗:)我上面的解决方案在第二个代码段中有一个示例。谢谢!但是,如果在控制器中获取数据后需要,请删除(或重置)socket.collection,我应该怎么做?您可以在我上面的回答中使用第二个选项($emit/$on),使控制器与对集合的更改保持同步。您能为我写一个示例吗:)我上面的解决方案在第二个代码段中有一个示例。谢谢!但是,如果在控制器中获取数据后需要,请删除(或重置)socket.collection,我应该怎么做?您可以在我上面的回答中使用第二个选项($emit/$on),使控制器与对集合的更改保持同步。您能为我写一个示例吗:)我上面的解决方案在第二个代码段中有一个示例。