Как использовать значение ng-click в качестве свойства ng-repeat?

#angularjs

#angularjs

Вопрос:

Как $scope.clickedVal войти r.clickedVal ?

Нажатие кнопки вызывает функцию, передавая два параметра:

 <a ng-click="display('Info', 'Admission_Info'); filters.Admission_Info= '!!'; ">Info</a> 
<a ng-click="display('Info', 'SomeOther_Info'); filters.SomeOther_Info= '!!'; ">Other</a>
  

Функция в контроллере:

 $scope.display = function (col, val) {
  $scope.filters = {};
  $scope.clickedColumn = col;
  $scope.clickedVal = val;
};
  

Таблица отображает отфильтрованное представление с 2 столбцами.

 <tr ng-repeat="r in response | filter:filters as filtered " ng-show="filtered.length">
  <td>{{ r.Name }}</td>
  <td>{{ r.clickedVal }}</td>
</tr>
  

{{ r.{{clickedVal}} }} не сработало.

Так, например, если нажата первая кнопка, r.clickedVal должна вернуться r.SomeOther_Info .

Я также пытался создать фильтр, но столкнулся с той же проблемой — m.value неверно.

 SchoolProgramsApp.filter('myFilter', function () {
    return function (input, column, value) {
        var out = [];
        angular.forEach(input, function (m) {         
            if (m.value === value) {           
                out.push(m)
            }    
        })    
        return out;
    }
});
  

Комментарии:

1. Я не понимаю. У вас есть переменная области видимости с именем response — как это выглядит? Вы ng-click устанавливаете какую-то другую переменную области видимости, и я не вижу связи между ней и response .

Ответ №1:

Вы должны использовать обозначение в скобках для доступа к свойству объекта по имени переменной:

 {{ r[clickedVal] }}
  

Комментарии:

1. Спасибо за ваш быстрый и полезный ответ.