2017-06-20 58 views
1

我正在向我的php腳本發送數據。數據看起來像enter image description hereangularjs在請求前檢查數據

控制器:

app.controller('searchCtrl', function($scope,$rootScope,$http,$q){ 
    $scope.search = function(values , type) { 
    if($scope.abort) { 
     $scope.abort.resolve(); 
    } 
    $scope.abort = $q.defer(); 
    var data={}; 
    data.values=values; 
    data.type=type; 

    $http.post("search.php", data,{timeout:$scope.abort.promise}).then(function success (response) { 

      $rootScope.search_result=response.data; 
     },function error (response){ 
      console.log("Request cancelled"); 
     } 
    ); 
    }; 
}); 

但我想檢查,如果在列表中的一個數組項具有財產VAL =「」;!有沒有什麼辦法檢查它,除了像循環一樣

var flag=0; 
for(var i=0; i<values.length; i++){ 
    if(values[i].val!="") flag=1; 
} 
if(flag)$http... 

+0

看看_.js第一次你可以讓它更快一點。它有很多真正有用的選項來查詢數組等等。 –

回答

2

檢查find方法

var flag = data.values.find(function(element){ 
    return element.val != '' 
}) 

if(flag)$http... 
+0

此函數返回值的整個對象數組 – RoGGeR

+0

是的,如果你想找到索引使用findIndex方法'數據.values.findIndex(' – aseferov

+0

你的答案可以幫助我!Tnx u!)問題是我的對象在開始時沒有屬性val。所以我寫'return element.val!=''&& element.val!= undefined' – RoGGeR

1

看來你的values數組是在一個對象中。所以你應該使用yourObjName.values來訪問它。

這裏是一個演示:

var myData = { 
 
    type: 'find_company', 
 
    values: [ 
 
     {name: 'Rob', val: ''}, 
 
     {name: 'Jon', val: '1'}, 
 
     {name: 'Aria', val: ''}, 
 
     {name: 'Ned', val: '2'}, 
 
    ] 
 
}; 
 

 
var flag = 0; 
 
for(var i = 0; i < myData.values.length; i++) { 
 
    if(myData.values[i].val != "") flag++; 
 
} 
 

 
if(flag) { 
 
    /* $http.post */ 
 
    console.log('flag is:', flag); 
 
}

+0

是的,但這就是我所說的。我希望有另一種方法來檢查是否有列表中的一個對象數組中有一個屬性val!=「」 – RoGGeR

1

你可以試試這個:

var array = [{val:"",name:"lucas"},{val:"12",name:"jaque"},{val:"12",name:"celine"},{val:"sdfsdf",name:"bruno"},{val:"",name:"ugo"},{val:"",name:"json"}] 

console.log(array.filter(x => x.val != "")); 

enter image description here

1

,如果你退出循環它匹配

var flag = false; 
 
for(var i = 0; i < myData.values.length; i++) { 
 
    if(myData.values[i].val != ""){ 
 
     flag=true; 
 
     i = myData.values.length; 
 
    } 
 
} 
 

 
if(flag) 
 
{ 
 

 
}