angularjs-传递选定对象';关于ng更改的其他属性
如何从下拉/ng选项中加载的json中获取其他属性 在ng更改时,我还希望传递选定对象的活动类型 我怎么能做到呢 我的观点是这样的angularjs-传递选定对象';关于ng更改的其他属性,angularjs,Angularjs,如何从下拉/ng选项中加载的json中获取其他属性 在ng更改时,我还希望传递选定对象的活动类型 我怎么能做到呢 我的观点是这样的 <div ng-app> <div ng-controller="cCtrl"> <select ng-model="campaign" ng-options="c.id as c.name for c in campaigns" ng-change="search2(c.campaignType)">
<div ng-app>
<div ng-controller="cCtrl">
<select ng-model="campaign" ng-options="c.id as c.name for c in campaigns" ng-change="search2(c.campaignType)">
<option value="">-- choose campaign --</option>
</select>
</div>
</div>
function cCtrl($scope) {
$scope.campaigns = [{
"custID": 1,
"custName": "aaa ",
"msgID": 3,
"msgName": "Email Test Msg",
"id": 2,
"name": "Email Test Campaign",
"description": "Test Campaign",
"campaignType": "Email",
"created": "1374229715",
"isActive": 1,
"isDeleted": 0
}];
$scope.search2 = function (campaignType) {
alert(campaignType); // not working
alert($scope.campaign.campaignType); // not working
//console.log($scope.campaign.campaignType);
}
}
<select ng-model="campaign" ng-options="c.name for c in campaigns" ng-change="search2(campaign)">
您可以像这样将所选对象传递到函数中,而不是传递属性
<div ng-app>
<div ng-controller="cCtrl">
<select ng-model="campaign" ng-options="c.id as c.name for c in campaigns" ng-change="search2(c.campaignType)">
<option value="">-- choose campaign --</option>
</select>
</div>
</div>
function cCtrl($scope) {
$scope.campaigns = [{
"custID": 1,
"custName": "aaa ",
"msgID": 3,
"msgName": "Email Test Msg",
"id": 2,
"name": "Email Test Campaign",
"description": "Test Campaign",
"campaignType": "Email",
"created": "1374229715",
"isActive": 1,
"isDeleted": 0
}];
$scope.search2 = function (campaignType) {
alert(campaignType); // not working
alert($scope.campaign.campaignType); // not working
//console.log($scope.campaign.campaignType);
}
}
<select ng-model="campaign" ng-options="c.name for c in campaigns" ng-change="search2(campaign)">
查看以下内容:
您不在重复上下文中。ngOptions的工作原理完全不同
上的ngModel将获取
的值,而不是整个对象的值。同样,您不在ngRepeat中,您没有访问对象的权限
无需将值作为参数传递,您可以从$scope
获取它。事实上,您也不需要ngChange,只需$scope.$watch('campaign',…)
所以
你也可以这样尝试(我们可以说是黑客)
--选择活动--
基本上,这段代码只需将ng模型和整个下拉列表一起传递到ng change
。
因此,在search2函数中,您只需将ng model
值搜索到该列表中,即可获得所需的对象
提琴供参考:在某些情况下,例如仅显示所选项目对应的成员值,不需要调用控制器功能。例如,如果要显示与所选活动相对应的活动类型,可以按如下方式编写
<select ng-model="campaign" ng-options="c.name for c in campaigns">
活动类型:{{Campaign.campaignType}
活动说明:{{Campaign.Description}}
对不起,这不是我要找的。我想访问除id之外的其他属性。那么在$scope.campetings
中搜索它如何?错误:u未定义。
是Lodash()或下划线,我将其包含在我的小提琴中,请确保您不会忘记,或者用其他实现替换。
查找。还有其他方法吗?我已经完成了在活动中接收id的编码,这就是为什么这样做的原因。稍后,需要访问对象的其他属性。现在,我喜欢以最小的变化传递对象或属性。可能吗?@Developer在您的代码中,选择的活动模型是id
,它由理解表达式c.id as…
确定。所以我想没有其他简单的方法了,因为除了id
之外,你不能将任何东西传递给函数。虽然这不是我想要的,但要为你的时间加上一个。@Developer你能把这个答案改成accepted吗。你的问题“如何从下拉/ng选项中加载的json中获取其他属性”最好由这个答案来回答,而不是另一个答案(我浪费了时间!)——我的2cents@Joey这并不能回答问题。这个答案本质上只是传递c.name
,而不是来自c
的任何其他属性。