2017-02-03 50 views
0

这里是我的代码:角的Javascript find方法

var myApp = angular.module('myApp',[]); 

//myApp.directive('myDirective', function() {}); 
//myApp.factory('myService', function() {}); 

myApp.controller('MyCtrl', ['$scope', MyCtrl]); 

function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 

    $scope.names = [ 
     { 
      "name": "AAAAAA", 
      "down": "False" 
     }, 
     { 
      "name": "BBBBBB", 
      "down": "45%" 
     }, 
     { 
      "name": "CCCCC", 
      "down": "12%" 
     } 
     ]; 

    $scope.datas = [ 
     { 
      "data": "AAAAAA/45%" 
     } 
     ]; 

    $scope.getTheRightData = data => $scope.datas.map(d=>d.data.split('/')[0]).find(d=>d===data); 
} 

HTML

<div ng-controller="MyCtrl"> 
    <table> 
     <tbody> 
      <tr ng-repeat="name in names"> 
      <td>{{name.name}}</td> 
      <td>{{name.down}}</td> 
      <td ng-bind="getTheRightData(name.name)"></td> 
      </tr> 
     </tbody> 
    </table> 

我该怎么办:从$scope.datas一个元素将在$scope.names匹配的元素,但它只能说明当name.name是一样的。我需要的时候name.namename.down是一样的,这样的事情:<td ng-bind="getTheRightData(name.name,name.down)"></td>,并在控制器

$scope.getTheRightData = data => $scope.datas.map(d=>d.data.split('/')[0][1]).find(d=>d===data); 
} 

,但它不工作。 感谢您提出解答和想法!

+0

鉴于这两个数组,你只能期待第一个元素,以显示负载或者是你期待的是,当它有一个匹配第三'td'只填充? –

回答

0

我创建了一个示例答案,检查下面的代码。

var myApp = angular.module('myApp', []); 
 

 
//myApp.directive('myDirective', function() {}); 
 
//myApp.factory('myService', function() {}); 
 

 
myApp.controller('MyCtrl', ['$scope', MyCtrl]); 
 

 
function MyCtrl($scope) { 
 
    $scope.name = 'Superhero'; 
 

 
    $scope.names = [{ 
 
    "name": "AAAAAA", 
 
    "down": "False" 
 
    }, { 
 
    "name": "BBBBBB", 
 
    "down": "45%" 
 
    }, { 
 
    "name": "CCCCC", 
 
    "down": "12%" 
 
    }, { 
 
    "name": "AAAAAA", 
 
    "down": "45%" 
 
    }]; 
 

 
    $scope.datas = [{ 
 
    "data": "AAAAAA/45%" 
 
    }, { 
 
    "data": "CCCCC/12%" 
 
    }]; 
 

 
    $scope.getTheRightData = data => $scope.datas.map(param => { 
 
    return { 
 
     name: param.data.split('/')[0], 
 
     down: param.data.split('/')[1] 
 
    } 
 
    }).find(param => param.name == data.name && param.down == data.down); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<html ng-app="myApp"> 
 

 
<head> 
 
    <title></title> 
 
    <meta charset="utf-8" /> 
 
</head> 
 

 
<body> 
 
    <div ng-controller="MyCtrl"> 
 
    <table> 
 
     <tbody> 
 
     <tr ng-repeat="name in names"> 
 
      <td>{{name.name}}</td> 
 
      <td>{{name.down}}</td> 
 
      <td>{{getTheRightData(name)}}</td> 
 
     </tr> 
 
     </tbody> 
 
    </table> 
 
    </div> 
 
</body> 
 

 
</html>