2017-06-15 39 views
1

我有4级范围内的变量构造动态变量 - 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 

我知道,如果我不喜欢这样,我会得到它的工作。

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

这里的目标是学习如何设置dynamic variables


我试图做一个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); 
    }); 


}; 

之前动态设置我一直得到

$scope.defined_vars.wifiIndex + '_device_ssid',

undefined_device_passphrase

一个如何去实现这个一种任务?

我接受任何建议在这一刻。

任何提示/建议/对此的帮助将非常感谢!

回答

2

你可以这样做:

$scope.defined_vars[wifiIndex + '_devise_ssid']

1

在所有的例子,你在本地定义变量(一个if语句中),所以它们是不可见的,如果外面。

您应该在函数的开头定义wifiIndex(例如var wifiIndex = ''),以便它在整个函数中可见。 然后,您可以使用它来定义ssid和密码短语:

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