Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularJs数据绑定问题,用于捕获和显示状态_Javascript_Angularjs - Fatal编程技术网

Javascript angularJs数据绑定问题,用于捕获和显示状态

Javascript angularJs数据绑定问题,用于捕获和显示状态,javascript,angularjs,Javascript,Angularjs,我正在尝试使用AngularJs获取和显示总发送、总成功和总错误。到目前为止,我已经能够检索代码中的信息Total Sent、Total Success和Total Error。然而,我不相信我所采取的绑定和显示这些状态的方法(使用全局变量)是正确的 这是我的控制器和相关服务 var sent = 0; var succ = 0; var err = 0; myApp.service('ParseMessageService', function() { this.myFunc =

我正在尝试使用AngularJs获取和显示总发送、总成功和总错误。到目前为止,我已经能够检索代码中的信息Total Sent、Total Success和Total Error。然而,我不相信我所采取的绑定和显示这些状态的方法(使用全局变量)是正确的

这是我的控制器和相关服务

 var sent = 0;
 var succ = 0;
 var err = 0;

myApp.service('ParseMessageService', function() {
  this.myFunc = function(message) {

    var res = message.match(/Success/g);

    if (res !== null) {
      //console.log(res);
      TSent = message.match(/Total Sent: (\d+)/);
      if (TSent) {
        sent = TSent[1];
        //parsedMsg.push(TSent[1]);
       //console.log(TSent[1]); //replace with $scope and display on Gui
      }
      TSucc = message.match(/Total Success: (\d+)/);
      if (TSucc) {
        succ = TSucc[1];
        //parsedMsg.push(TSucc[1]);
       // console.log(TSucc[1]); //replace with $scope and display on Gui
      }
      TErr = message.match(/Total Errors: (\d+)/);
      if (TErr) {
        err = TErr[1];
        //parsedMsg.push(TErr[1]);
        //console.log(TErr[1]); //replace with $scope and display on Gui
      }

    }
  }


  //}
});

myApp.factory('WebSocketService', function() {
  var service = {};

  service.connect = function() {
    if (service.ws) {
      return;
    }

    var ws = new WebSocket("ws://127.0.0.1:8000");
   ws.onopen = function() {
      service.callback("Succeeded to open a connection");
      //display webSocket connected status 
    };

    ws.onerror = function() {
      service.callback("Failed to open a connection");
    }

    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;
});

angular.module('myApp')
  .controller('PingTestController', function($scope, WebSocketService, ParseMessageService) {

    $scope.messages = [];
    $scope.TSent = [];
    $scope.TSucc = [];
    $scope.TErr = [];

    $scope.parsedSent = 0;
    $scope.parsedSucc =0;
    $scope.parsedErr =0;
    $scope.pingStr = "Ping"
    $scope.define = "Definitions";
    $scope.url = "www.google.com"
    $scope.size = "1";
    $scope.TTL = "10"
    $scope.pause = "3";
    $scope.paraStr = "[,]";
    $scope.cmdStartStr = "[;]";
    ($scope.trueStr) = "TRUE";
    ($scope.falseStr) = "FALSE";
    ($scope.PfalseStr) = "False";
    ($scope.cmdEndStr) = "[/]";
    //($scope.newLineStr) = "\r\n";
    ($scope.startCmd) = "Start";
    ($scope.stopCmd) = "Stop";
    ($scope.clearCmd) = "Clear";

    $scope.updatePing = function() {

      $scope.pingCmd = ($scope.cmdStartStr) + ($scope.pingStr) +
        ($scope.cmdStartStr) + ($scope.define) + ($scope.cmdStartStr) +
        ($scope.url) + ($scope.paraStr) + ($scope.PfalseStr) + ($scope.paraStr) +
        ($scope.TTL) + ($scope.paraStr) +
        ($scope.size) + ($scope.paraStr) +
        ($scope.pause) + ($scope.cmdEndStr);

    }

    WebSocketService.subscribe(function(message) {
      ParseMessageService.myFunc(message);
      $scope.parsedSent = (sent);
      $scope.parsedSucc = (succ);
      $scope.parsedErr= (err);
      $scope.messages.push(message);
      $scope.$apply();
    });

    $scope.connect = function() {
        WebSocketService.connect();
      }
       $scope.send = function() {
      WebSocketService.send($scope.pingCmd);
      $scope.text = "";
    }

    //[;]Ping[;]Stop[;]TRUE[/]
    $scope.stopPing = function() {
        $scope.pingStop = ($scope.cmdStartStr) + ($scope.pingStr) +
          ($scope.cmdStartStr) + ($scope.stopCmd) + ($scope.cmdStartStr) +
          ($scope.trueStr) + ($scope.cmdEndStr);
        WebSocketService.send($scope.pingStop);

      }
      // [;]Ping[;]Start[;]TRUE[/]
    $scope.startPing = function() {
      $scope.pingStart = ($scope.cmdStartStr) + ($scope.pingStr) +
        ($scope.cmdStartStr) + ($scope.startCmd) + ($scope.cmdStartStr) +
        ($scope.trueStr) + ($scope.cmdEndStr);
      WebSocketService.send($scope.pingStart);

    }

    // [;]Ping[;]Clear;]TRUE[/]
    $scope.clearPing = function() {
      $scope.pingClear = ($scope.cmdStartStr) + ($scope.pingStr) +
        ($scope.cmdStartStr) + ($scope.clearCmd) + ($scope.cmdStartStr) +
        ($scope.trueStr) + ($scope.cmdEndStr);
      WebSocketService.send($scope.pingClear);

    }
  });
下面是html代码的相关部分

<br/>

<button ng-click="send()" class="btn"> Add new Ping</button>
<button ng-click="startPing()" class="btn"> StartPing</button>
<button ng-click="stopPing()" class="btn">Stop Ping</button>
<button ng-click="clearPing()" class="btn">Clear Ping</button>
<br />


<div ng-repeat = "message in messages track by $index">
  {{parsedSent}} {{parsedSucc}} {{parsedErr}}
</div>

添加新的Ping 起动 停止Ping 清平
{{parsedSent}{{parsedSucc}}{{parsedErr}}

最后,我希望有一个干净的方法来获得这些统计数据并在网页上显示,即绿色背景的完全成功、红色背景的完全错误和蓝色背景的完全发送

您可以将全局变量移动到服务,然后从那里使用它们。您也可以使用这个答案:

您可以将全局变量移动到服务,然后从那里使用它们。您也可以使用以下答案:

在我的情况下,将全局变量移动到服务将不起作用,因为我稍后会使用控制器中的全局变量。订阅(函数(消息){ParseMessageService.myFunc(消息);$scope.parsedSent=(已发送);$scope.parsedSucc=(成功);$scope.parsedErr=(错误);$scope.messages.push(消息);$scope.$apply();});我看了链接,但不认为它回答了我要找的。我认为我和链接中提供的答案是正确的。服务只实例化一次,因此您可以将它们的属性用作c#/Java中类的静态成员。在我的情况下,将全局变量移动到服务将不起作用,因为我稍后使用这些全局变量作为控制器。订阅(函数(消息){ParseMessageService.myFunc(消息);$scope.parsedSent=(已发送);$scope.parsedSucc=(成功);$scope.parsedErr=(错误);$scope.messages.push(消息);$scope.$apply();});我看了链接,但不认为它回答了我要找的。我认为我和链接中提供的答案是正确的。服务只实例化一次,因此您可以将其属性用作c#/Java中类的静态成员