Событие клика по угловым элементам таблицы, направляющее его на второй URL, состоящий из идентификатора выбранного элемента

Каждый элемент в угловой таблице должен запускаться, я имею в виду, что он кликабелен, т. Е. При щелчке по любому элементу таблицы он должен использовать свой идентификатор в качестве основы для нового поискового элемента и должен указывать на этот URL-адрес выбранного элемента. Ниже приведены данные json исходного URL. У него есть идентификатор, который я не отображаю в своей угловой таблице.

{
  "emp": [
    {
      "BNK": "Rock",
      "GP1": [
        "92333"
      ]
    },
    {
      "BNK": "Jack",
      "GP1": [
        "923434",
        "928998"
        ]
    }
  ],
"status": "ok"
}

1) Я хочу нажать "BNK": "Скала"(которая будет в угловом формате таблицы), затем она должна перейти на другой URL ( http://api.abc.com/1.1/GetGP2? GP1 = 92333& uid = api-key), который выполняет поиск выбранных элементов по идентификаторам данных, перечисленным ниже, и отображает таблицу описания идентификаторов, приведенную ниже.

    {
      "emp": [
        {
          "BNK": "Jemmy XL",
          "DF": "24",
          "GP2": [
            "9233301"
          ]
        },
        {
          "BNK": "Geremy",
          "DF": "GEL",
          "GP2": [
            "9233302"
          ]
        }

 var countryApp = angular.module('myApp', []);
myApp.controller('CountryCtrl', function($scope, $http) {
  $scope.enteredValue = "*";
  $scope.targetUrl = 'url';
  $scope.reset = function() {
    $scope.enteredValue = '';
  };
  $scope.doIt = function() {
    $scope.targetUrl = 'http://api.abc.com/GetGPs?**search=oxy**&uid=api-key';
    $http.get( $scope.targetUrl )
      .success(function(data) {
        console.log(data);
        $scope.dta = data.emp;
      });
  };
});

// Отображаем только "BNK", а не "GP"

      <tr ng-repeat="x in dta | filter:enteredValue">
                <td>{{x.BNK}}</td>

1 ответ

Передать объект x в функцию 'doIt' в контроллере:

<tr ng-repeat="x in dta | filter:enteredValue">
    <td data-ng-click=doIt(x)>{{x.BNK}}</td>


$scope.doIt = function(x) {

  // because 'GPx' propery name is change between objects 
  // then we need to find the 'GPx' property name inside x: GP1 ?, GP2 ?, ... GPn ?
  var gpRegex = /^GP\d+/;
  var gpPropertyName = null;
  for(var propertyName in x) {
    if (gpRegex.test(propertyName)){
        gpPropertyName = propertyName;
    }
  }

  // if 'GPx' propery exists in x obj then insert its id's to target url
  if (gpPropertyName && x[gpPropertyName]){
    var gp = x[gpPropertyName];
    var gpIds = gp.join(',');
    $scope.targetUrl = 'http://api.abc.com/GetGPs?' + gpPropertyName + '=' + gpIds + &uid=api-key';
    $http.get( $scope.targetUrl )
      .success(function(data) {
        console.log(data);
        $scope.dta = data.emp;
      });
    }
};
Другие вопросы по тегам