У меня есть список выбора, который заполняется тегом 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
}
}]);
Может ли кто-нибудь указать мне в правильном направлении, где моя ошибка?
Большое спасибо!
Поскольку вы используете <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>
[{'projectName':'projectUrl'},{'projectName2':'projectUrl2'},{'projectName3':'projectUrl3'},...]
данных будет[{'projectName':'projectUrl'},{'projectName2':'projectUrl2'},{'projectName3':'projectUrl3'},...]