2017-02-03 3 views
0

Hier ist mein Code:Angular Javascript Methode 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> 

Was ich tun: ein Element aus $scope.datas wird in $scope.names ein Element passen, aber es zeigt nur, wenn name.name die gleiche ist . Ich brauche, wenn name.name und name.down ist das gleiche, so etwas wie diese: <td ng-bind="getTheRightData(name.name,name.down)"></td>, und in der Steuerung

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

, aber es nicht funktionieren. Danke für Antworten und Ideen für den Fortschritt!

+0

Da die beiden Arrays erwarten Sie nur das erste Element auf Last zu zeigen, oder erwarten Sie, dass der 3. 'td' nur es wird ausgefüllt, wenn ein Spiel ist? –

Antwort

0

Ich habe eine Beispielantwort erstellt, überprüfen Sie den folgenden Code.

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>

Verwandte Themen