2017-02-20 20 views
0

У меня недостаточно английского для описания, но я думаю, вы поймете это из кодов. В основном моя проблема заключается в том, что ng-model = "" ng-options = "" не придумывает данные формы при совместном использовании.AngularJs: Объект модели и единственная модель Ng Together

<select class="form-control" name="car_id" ng-model="car_id" ng-options="I.car_brand_code as I.car_brand_name for I in CarList" ng-change="GetState()" > 
            <option value="">Select Car</option> 
           </select> 

Окно выбора для брендов этих автомобилей

<div class="form-group"> 
            <label class="mtb10">Model Year</label> 
            <input type="text" name="modelYear" class="form-control" ng-model="data.modelYear" placeholder="Car Year..."> 
           </div> 

Это другие объекты форм. Где ng-модель - это разные данные данных. Я могу заполучить это. Как я могу получить значение в поле выбора.

Мне нужно получить значение «car_id».

+0

В ваших нг-вариантов у вас есть "I.car_brand_code как I.car_brand_name ...". Это означает, что все, что вы выберете, будет иметь значение I.car_brand_code и установить это как значение модели, указанное в ng-модели. Мне нужно увидеть больше кода, чтобы дать вам лучший ответ. Если вы можете предоставить плункер, я могу указать вас в точном направлении. –

+0

Или, если вы можете предоставить свой код контроллера, я могу помочь больше –

+0

Вот простой пример работы с ng-model и ng-options https://embed.plnkr.co/nUz7nABi3Bz4oSGH8FKH/ –

ответ

0

Попробуйте это:

  • Об изменении параметров раскрывающихся передать выбранное значение в функцию в качестве Param.
  • Используйте метод array.filter() для извлечения model year для выбранного автомобиля на основе идентификатора автомобиля.

DEMO

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('MyCtrl',function($scope) { 
 
    $scope.CarList = [ 
 
     { 
 
     "car_brand_code": 1, 
 
     "car_brand_name": "Maruti", 
 
     "model_year": 1990 
 
     }, 
 
     { 
 
     "car_brand_code": 2, 
 
     "car_brand_name": "Ford", 
 
     "model_year": 2005 
 
     } 
 
    ]; 
 
    
 
    $scope.GetState = function(carId) { 
 
     var selectedCar = $scope.CarList.filter(function(item) { 
 
     return item.car_brand_code == carId; 
 
     }); 
 
     $scope.data = { 
 
     "modelYear" : selectedCar[0].model_year 
 
     } 
 
    }; 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select class="form-control" name="car_id" ng-model="car_id" ng-options="I.car_brand_code as I.car_brand_name for I in CarList" ng-change="GetState(car_id)" > 
 
    <option value="">Select Car</option> 
 
    </select> 
 
    <div class="form-group"> 
 
    <label class="mtb10">Model Year</label> 
 
    <input type="text" name="modelYear" class="form-control" ng-model="data.modelYear" placeholder="Car Year..."> 
 
    </div> 
 
</div>