根据Angularjs中的第一个值显示第二个值

时间:2017-01-02 15:42:11

标签: javascript html angularjs

我有一个名字的ng-repeat列表。我想取这个名字并传递给url作为参数来接受他的主题。我到目前为止所做的是我可以传递名称并从另一个API获取主题。但问题是,姓氏用他的值取代所有下拉列表:

<ul ng-repeat="person in persons">
    <li ng-init="pass(person.name)">{{person.name}}</li>
    <li>
        <select>
            <option ng-repeat="(key, value) in choices">{{value}}</option>
        </select>
    </li>
</ul>

Controller.js

$scope.person = {
    [
        {
            "id": 1,
            "name": "Mark"
        },
        {
            "id": 2,
            "name": "Jakob"
        }
    ]
}

$scope.pass = function(name) {
    $scope.name = name;
    $http.get('url?name=' + $scope.name, {})
        .then(function(response) {
            $scope.choices = response.data;
        },
        function(errResponse) {
            console.error('Error while fetching choices');
        });

}

注意:有一个get方法可以传递URL末尾的person.name。

如何隔离从HTML传递到控制器。 感谢

1 个答案:

答案 0 :(得分:1)

使您的控制器代码如下:

$scope.persons = [{
        "id": 1,
        "name": "Mark"
    },
    {
        "id": 2,
        "name": "Jakob"
    }
];


$scope.pass = function(person) {
    $scope.name = person.name;
    $http.get('url?name=' + $scope.name, {}).then(function(response) {
            person.choices = response.data;
        },
        function(errResponse) {
            console.error('Error while fetching choices');
        });

}

你的html就像:

<ul ng-repeat="person in persons">
    <li ng-init="pass(person)">{{person.name}}</li>
    <li><select>
    <option ng-repeat="(key, value) in person.choices">{{value}}</option>
    </select></li>
</ul>

这是一个小提琴样本:https://jsfiddle.net/Lt7aP/4019/