2017-02-03 14 views
0

Вот мой код:Угловой Javascript метод находка

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

 Смежные вопросы

  • Нет связанных вопросов^_^