使用ng-click与ng-repeat相同的标签,使用ng-repeat范围中的参数

时间:2015-09-30 11:31:08

标签: javascript angularjs scope ng-repeat

我有一个选择列表,其中填充了对象列表中的ng-repeat标记。每个对象的name属性显示在标记中。单击其中一个标记我想用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
    }
}]);

有人能指出我正确的方向,我的错误在哪里吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

由于您使用的是<select>,因此您需要使用ng-change代替ng-click

ng-options

也使用ng-repeat代替<select>

参考:Select options through ng-click is not working in chrome browser using AngularJS

试试这个,在改变

的同时在populateGraphs函数中设置selectedProject
<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>