如何发送选择的下拉值作为参数传递给同一控制器中的另一个函数;角

时间:2014-07-22 15:00:53

标签: javascript angularjs

我有一个下拉列表,想法是点击第一个下拉列表,一旦选择了值,就应该发送它来调用一个函数,该函数在另一个下拉列表中生成一个列表。 我有两个函数在角度。问题是如何在第一个下拉列表中选择该选项后立即调用函数。 这是hTML:

    <center>
    <select type="submit" ng-submit="save()" ng-model="category">
        <option size=50 value="" selected>Select a meta category</option>
        <option ng-repeat="meta in metas.metas" value="{{meta}}">{{meta}}</option>
    </select>
</center>
<center>
    <select ng-model="category1">
        <option size=50 value="" disabled selected>Select a category</option>
        <option ng-repeat="category in categories.categories" value="{{category}}">{{category}}</option>
    </select>
</center>

AngularJs:

.controller('PostCtrl', function ($scope, $http) {})

.controller('UserListCtrl', function ($scope, $http) {
$scope.list = function () {
    $http.get('http://94.125.132.253:8001/getuncategorisedplaces').success(function (data) {

        $scope.places = data;
        console.log(data);
        $scope.message = 'List of Uncategorised places';
    })
}
$scope.list();
$scope.meta = function () {
    return $http.get('http://94.125.132.253:8000/getmetas').success(function (data) {

        $scope.metas = data;
        console.log($scope.category);
        console.log(data);
        $scope.message = 'List of Uncategorised places';

    })
}


$scope.meta1 = $scope.meta().then(function (data) {
    var formdata = {
        'category': $scope.category,
    }
    var inserturl = 'http://94.125.132.253:8000/getcategories?meta=' + formdata.category;
    return $http.get(inserturl).success(function (data) {

        $scope.categories = data;
        console.log(formdata.category);
        console.log(data);
        $scope.message = 'List of Uncategorised places';
    });
});

控制台中没有错误,因为我没有选择任何选项,我尝试过onchange =“function()”。但是我收到错误声明该功能无法识别。我已经从代码中取出它,因为它不起作用并且不适合。一旦用户从第一个列表中选择元类别,我需要第一个下拉列表来调用$ scope.meta1中的函数

1 个答案:

答案 0 :(得分:1)

你必须观察你的模型,并在它改变时启动你的功能,比如

$scope.$watch('category', function(newvalue) {
                $scope.meta()
            });

您也可以在选择

上使用ng-change
ng-change="meta()"