angularjs-传递选定对象';关于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)">

如何从下拉/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)">
            <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
的任何其他属性。