[英]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.