2016-08-25 60 views
0
$scope.ptArray={m1 : $scope.somevalue1, 
       m2 : $scope.somevalue2, 
       m3 : $scope.somevalue3}; 
$scope.errMsg={m1 : 'msg1', 
       m2 : 'msg2', 
       m3 : 'msg3'}; 
if($scope.ptArray.this==""){ 
      alert($scope.errMsg.this); 
      } 

'这'在这里不起作用。如果我使用m1,m2或m3而不是“this”,它将起作用,但仅适用于该变量。在此AngularJS中的数组索引

+0

你有什么期望“本”是?这不是魔术。 – Soviut

+0

我只是想告诉我想要的东西:) –

回答

2

你可以做这样的事情:

获取所有具有空String作为值的键:

var empty = []; 
Object.keys($scope.ptArray).forEach((k) => {if(ptArray[k] == ""){empty.push(k);}}); 

所有这些密钥创建与信息的提示:

var msg = ""; 
empty.forEach((k) => {msg+=$scope.errMsg[k]+"\n"}); 
if(msg.length > 0){ 
    alert(msg); 
} 

或在单个循环中一次完成所有操作:

var msg = "": 
Object.keys($scope.ptArray).forEach((k) => 
     { 
     if(ptArray[k] == ""){ 
      msg += $scope.errMsg[k]+"\n"; 
     } 
     }); 
if(msg.length > 0){ 
    alert(msg); 
} 
0

如果你想访问你可以使用字典的地方,使用什么......

if($scope.ptArray[str]==""){ 
    alert($scope.errMsg[str]); 
} 

哪里str是价值'm1''m2''m3'一个字符串。 但是使用一个阵列可以是一个更好的选择:

if($scope.ptArray[index]==""){ 
    alert($scope.errMsg[index]); 
} 

其中指数是一个整数值。

我不知道你想用this做什么。

+0

$ scope.errMsg [index] returns [object Object] does not work –

0

可以试试这个

$scope.ptArray={m1 : $scope.somevalue1, 
      m2 : $scope.somevalue2, 
      m3 : $scope.somevalue3}; 
$scope.errMsg={m1 : 'msg1', 
      m2 : 'msg2', 
      m3 : 'msg3'}; 

Object.keys($scope.ptArray).forEach(function(node){ 
      if($scope.ptArray[node]==""){ 
       console.log($scope.errMsg[node]); 
      } 
    });