Использование нажатия на тот же тег в качестве повтора с аргументом из области действия ng-repeat

0

У меня есть список выбора, который заполняется тегом ng-repeat из списка объектов. Свойство имени каждого из этих объектов отображается в теге. При щелчке одного из этих тегов я хочу вызвать функцию с помощью ng-click, передав свойство url этих объектов в качестве аргумента.

Заполняющая часть работает нормально, но это не похоже на то, как проходит аргумент. Вот код:

Html:

<div ng-controller="TaskChartCtrl">
  <select>
    <option ng-repeat="project in projectList" ng-click="populateGraphs(project.url)">{{ project.name }}</option>
  </select>
</div>

Соответствующая часть от контроллера:

 myApp.controller("TaskChartCtrl", ["$scope", "$http", function ($scope, $http) {    

    $scope.projectList = {};

    $http.get('URL', config).then(function(response) {
        $scope.projectList = response.data.projects;
    }, function(errResponse) {
        console.error("Error fetching projectList");
    });


    $scope.populateGraphs = function(projectUrl) {
      //FUNCTION CODE GOES HERE
    }
}]);

Может ли кто-нибудь указать мне в правильном направлении, где моя ошибка?

Большое спасибо!

  • 0
    вы получаете какие-либо ошибки? Вы можете опубликовать образец данных?
  • 0
    Привет Тарун. Нет, я не получаю никаких ошибок. [{'projectName':'projectUrl'},{'projectName2':'projectUrl2'},{'projectName3':'projectUrl3'},...] данных будет [{'projectName':'projectUrl'},{'projectName2':'projectUrl2'},{'projectName3':'projectUrl3'},...]
Теги:
scope
ng-repeat

1 ответ

2
Лучший ответ

Поскольку вы используете <select>, вам нужно использовать ng-change вместо ng-click

Также используйте ng-options вместо ng-repeat для <select>

Ссылка: выбор параметров с помощью ng-click не работает в браузере Chrome, используя AngularJS

Попробуйте это, установите функцию selectedProject внутри функции populateGraphs при изменении

<select ng-model="selectedProject" ng-options="project as project.name for project in projectList" ng-init="selectedProject = 'someProjectName'" ng-change="populateGraphs(selectedProject.url)">
<option value="">Select A Project</option>
</select>
  • 0
    Привет Гопинатх, я просто пошел на твой подход, и снова заселение работает хорошо. Однако, когда я консоль регистрирую аргумент url проекта в функции populateGraphs, он возвращает меня неопределенным при каждом вызове. Таким образом, кажется, что передача URL проекта все еще не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню