gpt4 book ai didi

javascript - 当 socket.io 事件存在时,Angularjs Controller 不工作

转载 作者:行者123 更新时间:2023-12-03 08:16:48 24 4
gpt4 key购买 nike

我在连接上初始化了一个 socket.io 事件,该事件应该更改此 Controller (它控制图表)内的项目的值。但是当有 mySocket.on 时它根本不起作用,不要在此 Controller 中渲染任何内容。当我把它拿出来时,它工作得很好。 mySocket 是一个正确的函数,我在其他 Controller 中使用它没有任何问题。

.controller('KnobCtrl', ['$scope', function($scope, mySocket) {
$scope.itemsCounter = 0;
$scope.roundValue = 0;

mySocket.on('newConnectionCounter', function (itemsInRoundCounter, valueOfRound) {
$scope.itemsCounter = itemsInRoundCounter;
$scope.roundValue = valueOfRound;
});

$scope.data = {
value: $scope.itemsCounter,
options: {
width: 190,
fgColor: "#FFAB40",
skin: "tron",
thickness: .3,
displayPrevious: false,
readOnly: true,
max: 30,
inputColor: "#ffffff"
}
};
$scope.options = {
width: 150,
fgColor: "#ffec03",
skin: "tron",
thickness: .8,
displayPrevious: false,
readOnly: true,
max: 50
};

$scope.formatOptions = function(data) {
data.formattedOptions = JSON.stringify(data.options).replace(/,/g,"\n");
return data;
};
}]);

最佳答案

看起来您希望将其注入(inject)到 Controller 函数中,但您缺少传递给 .controller 方法的数组中的字符串:

.controller('KnobCtrl', ['$scope', function($scope, mySocket) {
...
});

该函数的任何参数都应在数组中表示:

 .controller('KnobCtrl', ['$scope', 'mySocket', function($scope, mySocket) {
...
});

这假设“mySocket”是存在于“Angular 世界”中的东西(使用 angular.service、angular.factory 等创建)。如果“mySocket”只是一些全局定义的函数,那么您不希望将其列为参数。如果该参数中没有传递任何内容,即使它全局存在,它也将是未定义的。注意:如果它只是 Angular 外部的全局定义对象,您可能需要调用 $scope.$apply() 来在处理程序中启动摘要循环。

查看它在您的应用程序中工作的位置,并了解如何将其注入(inject)到 Controller 中。

关于javascript - 当 socket.io 事件存在时,Angularjs Controller 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901051/

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