2017-06-15 2 views
1

Ich habe 4 Umfang VariablenBaukonstruktion Dynamische Variable - AngularJS

$scope.defined_vars.p_24_device_ssid 
$scope.defined_vars.p_50_device_ssid 
$scope.defined_vars.g_24_device_ssid 
$scope.defined_vars.g_50_device_ssid 

Ich weiß, wenn ich es so tun, ich werde es an die Arbeit.

if(section == 'private'){ 
    if(freq == '2.4'){ 
     var wifiIndex = 'p_24'; 
     var ssid = $scope.defined_vars.p_24_device_ssid; 
     var passphrase = $scope.defined_vars.p_24_device_passphrase; 
    }else{ 
     var wifiIndex = 'p_50'; 
     var ssid = $scope.defined_vars.p_50_device_ssid; 
     var passphrase = $scope.defined_vars.p_50_device_passphrase; 
    } 
}else{ 
    if(freq == '2.4'){ 
     var wifiIndex = 'g_24'; 
     var ssid = $scope.defined_vars.g_24_device_ssid; 
     var passphrase = $scope.defined_vars.g_24_device_passphrase; 
    }else{ 
     var wifiIndex = 'g_50'; 
     var ssid = $scope.defined_vars.g_50_device_ssid; 
     var passphrase = $scope.defined_vars.g_50_device_passphrase; 
    } 
} 

var data = { 
    cpe_mac: $scope.cpe_mac, 
    vlan: section, 
    freq:freq, 
    ssid: ssid, 
    passphrase: passphrase, 
}; 

Aber

das Ziel hier ist, zu lernen, wie man die dynamic variables einzustellen.


Ich versuche, dynamisch zu setzen, bevor eine POST

$scope.updateWiFi = function(section,freq) { 

    if(section == 'private'){ 
     if(freq == '2.4'){ 
      var wifiIndex = 'p_24'; 
     }else{ 
      var wifiIndex = 'p_50'; 
     } 
    }else{ 
     if(freq == '2.4'){ 
      var wifiIndex = 'g_24'; 
     }else{ 
      var wifiIndex = 'g_50'; 
     } 
    } 

    var data = { 
     cpe_mac: $scope.cpe_mac, 
     vlan: section, 
     freq:freq, 
     ssid: $scope.defined_vars.wifiIndex + '_device_ssid', 
     passphrase: $scope.defined_vars.wifiIndex + '_device_passphrase', 
    }; 

    console.log("PUT Data is " + angular.toJson(data)); 

    $http({ 
     method: 'PUT', 
     url: '/updateWiFi', 
     data: angular.toJson(data) 
    }) 

    .then(function successCallback(response) { 
     console.log(response); 
    }, function errorCallback(response) { 
     console.log("%cError in updateWiFi()", "color: red;"); 
     console.log(response.statusText); 
    }); 


}; 

machen hielt ich

$scope.defined_vars.wifiIndex + '_device_ssid',

undefined_device_passphrase

bekommen Wie würde man gehen und erreichen diese Art der Aufgabe?

Ich bin offen für alle Vorschläge in diesem Moment.

Alle Hinweise/Vorschläge/hilft auf diesem werden sehr geschätzt!

Antwort

2

Sie können dies tun:

$scope.defined_vars[wifiIndex + '_devise_ssid']

1

In allen Beispielen definieren Sie Ihre Variablen lokal (innerhalb einer if-Anweisung), damit sie außerhalb, wenn nicht sichtbar sind.

Sie sollten wifiIndex am Anfang Ihrer Funktion (var wifiIndex = '' zum Beispiel) definieren, so dass es innerhalb der gesamten Funktion sichtbar ist. Dann können Sie es verwenden, um SSID und Passphrase wie folgt zu definieren:

ssid: $scope.defined_vars[wifiIndex + '_device_ssid'] 
passphrase: $scope.defined_vars[wifiIndex + '_device_passphrase']