繁体   English   中英

将值从视图传递到控制器,以便可以将其用作Angular.js中函数的参数

[英]Pass value from the view to controller such that it can be used as a parameter to the function in Angular.js

我创建了一个下拉菜单,并希望当选择一个选项时,该值传递给控制器​​,这样我就可以将该值用作函数的参数。 我的下拉菜单如下:

<div class="dropdown dropdown-menu-right filter-dropdown">
        <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
            Filters
            <span class="caret"></span>
        </button>
        <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
            <li><a href="#" ng-click="filter_field = 'evt'">Event Name</a></li>
            <li><a href="#" ng-click="filter_field = 'sun'">Source User</a></li>
            <li><a href="#" ng-click="filter_field = 'dun'">Target User</a></li>
        </ul>
    </div>

我要传递给对象的功能是:

function userEventData (resp) {
            $http({
                method: 'GET',
                url: resp.results["@href"]
            }).success(function (responseData) {
                logger.info("responseData inside get 2", responseData);
                logger.info("field values", **$scope.filter_field**);
                filterEventField(responseData, **$scope.filter_field**);
                //return responseData;
            });

理想的选择是为事件名称,sun,源名称等传递诸如evt之类的值。因为最终我将使用它作为键名来访问数据对象的值。 因此内容将如下所示:responseData.object [i] .evt

function filterEventField(responseData, field){
             dataitems = VisDataSet([]);
             logger.info("filter_field", field);
             for(var i = 0; i < responseData.objects.length; i++) {
                console.log(responseData.objects[i].evt);
                var startDate = new Date(responseData.objects[i].spt);
                var endDate = new Date(responseData.objects[i].det);
                var temp = {
                                id: i,
                                content: responseData.objects[i].field,
                                start: startDate,
                                end: endDate,
                                title: "user: " + responseData.objects[i].sun + "<br/>dip: " + responseData.objects[i].dip + "<br/>start: " + startDate
                            };

                        dataitems.add(temp);
                    }
                    $scope.data = {items: dataitems};
                    logger.info("inside filtereventfield", $scope.data);
            }

选择特定选项后,如何从视图中获得价值?

将动作函数放在范围内:

 $scope.doIt = function() {
     userEventData(resp);
 };

然后在ng-click表达式中使用它:

<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li ng-click="filter_field = 'evt'; doIt()">Event Name</li>
    <li ng-click="filter_field = 'sun'; doIt()">Source User</li>
    <li ng-click="filter_field = 'dun'; doIt()">Target User</li>
</ul>

要么

 $scope.doIt = function(val) {
     $scope.filter_field = val;
     userEventData(resp);
 };
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li ng-click="doIt('evt')">Event Name</li>
    <li ng-click="doIt('sun')">Source User</li>
    <li ng-click="doIt('dun')">Target User</li>
</ul>

尝试在视图中使用ng-change,它会在控制器中调用一个函数以从视图中获取选定的值。 希望这能解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM