gpt4 book ai didi

javascript - 你如何将参数传递给 AngularJS 工厂?

转载 作者:行者123 更新时间:2023-11-30 17:34:59 25 4
gpt4 key购买 nike

我有一个封装了 websocket 连接的 AngularJS 工厂。我想在我的 Controller 中使用其中的一些,每个都连接到不同的端点(由下面的 personId 指定)

angular.module('personService', ['ngResource']).
factory('Person', function($resource) {
var service = {};

if (service.ws) { return; }

var personId = ??? // This will be different for each person.
var ws = new WebSocket("ws://127.0.0.1:5000/" + personId + "/");

ws.onopen = function() {
console.log("WebSocket opened");
};

ws.onerror = function(err) {
console.log("WebSocket error " + err);
}

ws.onmessage = function(message) {
service.callback(message.data);
};

service.ws = ws;

service.send = function(message) {
service.ws.send(message);
}

service.subscribe = function(callback) {
service.callback = callback;
}

return service;
});

function Ctrl($scope, $timeout, Person) {

$scope.p1 = Person("personId1"); // ??
$scope.p2 = Person("personId1"); // ??
}

最佳答案

update 对不起,我对你有点误解。像往常一样定义你的 Person 构造函数,即

function Person(id) {
var ws = new Websocket('some url ' + id);
}

然后注入(inject)一个工厂

app.factory('PersonFactory', function () { return Person; });

然后在你的 Controller 中

app.controller('MyCtrl', function ($scope, PersonFactory) {
$scope.person1 = new PersonFactory(1);
$scope.person2 = new PersonFactory(2);
}

瞧瞧。

关于javascript - 你如何将参数传递给 AngularJS 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com