angularjs - 在ng-change上传递所选对象的其他属性

Dev*_*per 14 angularjs

如何在dropdown/ng-options中从加载的json中获取其他属性

在ng-change上我还想传递所选对象的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>
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像这样

  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);

    }

}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/webtheveloper/Qgmz7/8/

zs2*_*020 22

您可以将选定的对象传递给这样的函数,而不是传入属性

<select ng-model="campaign" ng-options="c.name for c in campaigns" ng-change="search2(campaign)">
Run Code Online (Sandbox Code Playgroud)

Working Demo


Ser*_*hiv 8

看看这个:http://jsfiddle.net/Qgmz7/9/

您不在ngRepeat上下文中.ngOptions完全不同.

a上的ngModel <select>将获取值,而<option>不是整个对象.同样,您不在ngRepeat内,您无权访问您的对象.

无需将值作为参数传递,您可以从中获取它$scope.事实上你也不需要ngChange,你可以$scope.$watch('campaign', ...)

所以

$scope.search2 = function () {
    console.log($scope.campaign);
}
Run Code Online (Sandbox Code Playgroud)