【问题标题】:angularjs checking data before requestangularjs在请求之前检查数据
【发布时间】:2017-06-20 12:45:22
【问题描述】:

我正在向我的 php 脚本发送数据。数据看起来像

控制器:

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...

?

【问题讨论】:

  • 看看_.js。它有很多非常有用的选项来查询数组等。

标签: javascript angularjs request-cancelling


【解决方案1】:

检查find方法

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

if(flag)$http...

【讨论】:

  • 这个函数返回values数组的整个对象
  • 是的,如果你想查找索引使用 findIndex 方法data.values.findIndex(
  • 您的回答对我有帮助! Tnx u!)问题是我的对象在开始时没有属性val。所以我写return element.val != '' &amp;&amp; element.val!=undefined
【解决方案2】:

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

【讨论】:

  • 是的,但这就是我要说的。我希望有另一种方法来检查列表中是否有一个具有属性 val!="" 的对象
【解决方案3】:

你可以试试这个:

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 != ""));

【讨论】:

    【解决方案4】:

    如果你在第一次匹配时退出循环,你可以让它更快一点

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2022-11-10
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      相关资源
      最近更新 更多