javascript - 使用 Angular Js 和 javascript 对输入值进行 json 数据验证

标签 javascript jquery angularjs json angularjs-directive

我在 Angular JS 项目中的文件 (/static/models.json) 中获取了 json 数据..

{
    "familyType": {
        "A650": [{
            "partID": "2630_H"
        }, {
            "partID": "2690_H"
        }, {
            "partID": "2680_H"
        }, {
            "partID": "2600_H"
        }, {
            "partID": "2620_H"
        }, {
            "partID": "2610_H"
        }],
        "S400": [{
                "partID": "S500_Aru"
            }, {
                "partID": "S600_Aru"
            }, {
                "partID": "S700_Aru"
            }, {
                "partID": "S800_Aru"
            }, {
                "partID": "S900_Aru"
            }, {
                "partID": "S100_Aru"
            }
        ]
    }
}

我有以下函数,参数传递到该方法(Part_id1,Part_id2)和函数内部。我有两种系列类型(A650,S400),我需要检查是否两个输入的part_Id(Part_id1,Part_id2)是否属于同一系列(即A650S400)

如果两个part_id(Part_id1,Part_id2)来自不同的家庭类型,我需要提醒用户... 我们如何遍历json文件并比较两种家庭类型中的part_ID..

$scope.ValidateModelList = function(Part_id1, Part_id2, $http) {
     if ($scope.firTable.selectedRowsCount != 0) {
         $http.get("/static/models.json")
             .success(function(response) {
                 $scope.names = response;
             });
         // here i am storing json data in $scope.names object
         //  here i need to check that the part_ids with the family
     }
 }

请有人帮忙解决这个问题,我将非常感激......

提前非常感谢......

更新

function ValidateModel(partIDlist){

             alert('2');
             var data = stubdata; // Stubdata is actual json data mentioned above
             var partIdResult = [];
             for (var key in data.familyType) {

                 angular.forEach(data.familyType[key], function (object) {

                     angular.forEach(partIDlist, function (partId) {

                         if (partId == object.partID) {
                             partIdResult.push({
                                 value: partId, family: key
                             });
                         }
                     });
                 });
             }

             for (var i = 0; i < partIdResult.length; i++) {
                // alert(partIdResult.length);
                //alert(partIdResult.family);
                alert(JSON.stringify(partIdResult))
                alert(partIdResult.family); // this is giving undefined value
             alert(partIdResult[0].family);

                 if (partIdResult.family === partIdResult[0].family){
                     alert('yes');
                     alert("part_id's are same");
                 }
                 else if (partIdResult.family !== partIdResult[0].family) {
                     alert("part_id's not same");
                 }
             }
         }

这里我传递一个像这样的列表..

var partIDlist= ["S900_Aru", "S500_Aru", "2610_H"];

我收到alert(JSON.stringify(partIdResult)) partIdResult,如下所示

 [{"value":"S900_Aru","family":"S400"},
 {"value":"S500_Aru","family":"S400"},
 {"value":"2610_H","family":"A650"}]

我应该得到这三个part_id不属于同一个模型..而不是这个我得到part_id属于同一个

您能帮忙解决这个问题吗...提前非常感谢...

最佳答案

不建议使用“First succes”,而是使用 .then。第二个数据存储在response.data下。

.then(function(response) {
     var data = response.data;
     var partId2Family = null, partId1Family = null;

     for(var key in data.familyType){
         angular.forEach(data.familyType[key], function(object){
              if(Part_id1 == object.partID){
                  partId1Family = key;
              }
              if(Part_id2 == object.partID){
                  partId2Family = key;
              }
         })
     }     
     if(partId1Family !== PartId2Family){
          // warning
     }         
}

这应该可以解决问题。

编辑:数组版本

.then(function(response) {
     var data = response.data;
    var partIdResult = [];
     for(var key in data.familyType){
         angular.forEach(data.familyType[key], function(object){
              angular.forEach(partIds, function(partId){
                   if(partId == object.partID){
                        partIdResult.push({value:partId, family:key});
                   }
              });
         })
     }     
     for(var i = 1; i < partIdResult.length; i++){
         if(partIdResult[i].family !== partIdResult[0].family){
                //error
         }
     }      
}

关于javascript - 使用 Angular Js 和 javascript 对输入值进行 json 数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647089/

相关文章:

javascript - 所有脚本加载后如何获得回调?

javascript - HighChart 类型 = 区域悬停颜色在多个点发生变化

javascript - 通过数组传递隐藏字段值和文本框值

javascript - Knockout JS - 单击加载所选项目的模式编辑表单

javascript - 将 JSON 格式化为特定结构

javascript - JCrop - 功能未实现

jquery - jQuery AJAX POST 上缺少位置 header

javascript - 如何测试现有的Angularjs整体性能(DOM渲染)?

javascript - 访问嵌入的 ng-repeat 内的指令范围

javascript - 如果单击内部的复选框,则防止默认 anchor 行为